[Sqlalchemy-tickets] Issue #4305: Sequence for PostgreSQL are not working as expected (zzzeek/sqlal
Brought to you by:
zzzeek
From: MaxB <iss...@bi...> - 2018-07-18 08:54:32
|
New issue 4305: Sequence for PostgreSQL are not working as expected https://bitbucket.org/zzzeek/sqlalchemy/issues/4305/sequence-for-postgresql-are-not-working-as MaxB: Hi guys! I use PostgreSQL. I want to create an auto-increment field started from 1000, increment by 2. My not working code: ``` #!python class MyTable(db.Model): __tablename__ = 'my_table' id_seq = Sequence('my_table_id_seq', start=1000, increment=2) id = db.Column(db.Integer, id_seq, server_default=id_seq.next_value(), primary_key=True) ``` In my autogenerated migration scrip I see this (which will obviously not work, because there is no definition for my_table_id_seq): ``` #!python def upgrade(): # ### commands auto generated by Alembic - please adjust! ### op.create_table('my_table', sa.Column('id', sa.Integer(), server_default=sa.text("nextval('my_table_id_seq')"), nullable=False), sa.PrimaryKeyConstraint('id') ) # ### end Alembic commands ### ``` If I run it, I get expected error: ``` #!python File "/Users/maxb/Projects/ANDR3/Andr3Admin/venv/lib/python3.6/site-packages/sqlalchemy/engine/default.py", line 507, in do_execute cursor.execute(statement, parameters) sqlalchemy.exc.ProgrammingError: (psycopg2.ProgrammingError) relation "my_table_id_seq" does not exist [SQL: "\nCREATE TABLE my_table (\n\tid INTEGER DEFAULT nextval('my_table_id_seq') NOT NULL, \n\tPRIMARY KEY (id)\n)\n\n"] (Background on this error at: http://sqlalche.me/e/f405) ``` So, how do I code it to have expected behaviour? Thanks in advance! |