[Sqlalchemy-tickets] Issue #3470: Integer(mysql) != Integer(postgres) (zzzeek/sqlalchemy)
Brought to you by:
zzzeek
|
From: Leonardo R. <iss...@bi...> - 2015-07-02 08:01:37
|
New issue 3470: Integer(mysql) != Integer(postgres) https://bitbucket.org/zzzeek/sqlalchemy/issue/3470/integer-mysql-integer-postgres Leonardo Rossi: I found that a `Integer` column in mysql means `long` in python and for PostgreSQL means `int` in python. It means that to have a `long` in both I need to use `BigInteger`? e.g. ```python from sqlalchemy import Column, Integer, Text, create_engine from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.orm import sessionmaker Base = declarative_base() class FuuTable(Base): __tablename__ = 'fuutable' id = Column(Integer(), primary_key=True, autoincrement=True) name = Column(Text(), nullable=False) mysql_e = create_engine("mysql://root:@localhost/invenio", echo=True) postgres_e = create_engine( "postgres://postgres:postgres@localhost/testdb5", echo=True) # mysql Base.metadata.drop_all(mysql_e) Base.metadata.create_all(mysql_e) Session = sessionmaker(bind=mysql_e) mysql_session = Session() mysql_fuu = FuuTable(name="bar") mysql_session.add(mysql_fuu) mysql_session.commit() mysql_test = mysql_session.query(FuuTable).filter( FuuTable.id == mysql_fuu.id).first() # postgres Base.metadata.drop_all(postgres_e) Base.metadata.create_all(postgres_e) Session = sessionmaker(bind=postgres_e) postgres_session = Session() postgres_fuu = FuuTable(name="bar") postgres_session.add(postgres_fuu) postgres_session.commit() postgres_test = postgres_session.query(FuuTable).filter( FuuTable.id == postgres_fuu.id).first() # test if Integer(mysql) == Integer(postgres) print "Integer(mysql) = ", type(postgres_test.id) print "Integer(postgres) = ", type(mysql_test.id) print type(postgres_test.id) == type(mysql_test.id) ``` |