Correction, I just noticed you are trying to get Alembic autogenerate
to spit it out.   not supported right now, see
https://bitbucket.org/zzzeek/alembic/issues/60/autogenerate-for-sequences-as-well-as
.

On Wed, Jul 18, 2018 at 10:28 AM, Mike Bayer <[email protected]> wrote:
> On Wed, Jul 18, 2018 at 4:52 AM, Max Bourinov <[email protected]> wrote:
>> Hi guys!
>>
>> I use PostgreSQL. I want to create an auto-increment field started from
>> 1000, increment by 2.
>>
>> My not working code:
>>
>> 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)
>
> the correct form of Column with Sequence is at:
>
> http://docs.sqlalchemy.org/en/latest/core/defaults.html#defining-sequences
>
> note that the Sequence is placed inline inside the Column itself.
>
> to combine it with nextval() as a server side default is additionally
> described at:
>
> http://docs.sqlalchemy.org/en/latest/core/defaults.html#associating-a-sequence-as-the-server-side-default
>
>
> the second example includes both the Core Table and the declarative form.
>
>
>
>>
>> In my autogenerated migration scrip I see this (which will obviously not
>> work, because there is no definition for my_table_id_seq):
>>
>> 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:
>>
>>   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!
>>
>> --
>> SQLAlchemy -
>> The Python SQL Toolkit and Object Relational Mapper
>>
>> http://www.sqlalchemy.org/
>>
>> To post example code, please provide an MCVE: Minimal, Complete, and
>> Verifiable Example. See http://stackoverflow.com/help/mcve for a full
>> description.
>> ---
>> You received this message because you are subscribed to the Google Groups
>> "sqlalchemy" group.
>> To unsubscribe from this group and stop receiving emails from it, send an
>> email to [email protected].
>> To post to this group, send email to [email protected].
>> Visit this group at https://groups.google.com/group/sqlalchemy.
>> For more options, visit https://groups.google.com/d/optout.

-- 
SQLAlchemy - 
The Python SQL Toolkit and Object Relational Mapper

http://www.sqlalchemy.org/

To post example code, please provide an MCVE: Minimal, Complete, and Verifiable 
Example.  See  http://stackoverflow.com/help/mcve for a full description.
--- 
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/sqlalchemy.
For more options, visit https://groups.google.com/d/optout.

Reply via email to