I'm on my last hurdle with implementing Alembic with our SqlAlchemy models, 
and the issue is I can't get Alembic to implement my id column with 
BIGSERIAL, it always defaults to SERIAL.   I implemented a TypeDecorator on 
each of the primary key columns that I want to be BIGSERIAL, the 
implementation is below.  Note that I need to work with SQLLITE for in 
memory tests that run which is why i'm using a decorator.  From looking at 
the source code in base.py for postgres, this should work.  However, when I 
set a print statement in the source where you do check (as below), it 
appears that the impl_type is BIGINT and falls through to SERIAL.

 if isinstance(impl_type, sqltypes.BigInteger):
                colspec += " BIGSERIAL"
            elif isinstance(impl_type, sqltypes.SmallInteger):
                colspec += " SMALLSERIAL"
            else:
                colspec += " SERIAL"



from sqlalchemy.types import (
    TypeDecorator, CHAR, Numeric, Float,
    Integer, BigInteger)

class SafeBigInteger(Types.TypeDecorator):
    impl = BigInteger

    def load_dialect_impl(self, dialect):
        if dialect.name == 'postgresql':
            return dialect.type_descriptor(BigInteger)
        else:
            return dialect.type_descriptor(Integer)

-- 
You received this message because you are subscribed to the Google Groups 
"sqlalchemy-alembic" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sqlalchemy-alembic+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to