尝试:Column(name='id', type_=Integer, default=Identity())
我正在看https://docs.sqlalchemy.org/en/14/core/defaults.html#sqlalchemy.schema.Identity和https://docs.sqlalchemy.org/en/14/core/metadata.html#sqlalchemy.schema.Columninit但我看不出等效的是什么,我试过default=Identity()
,但得到了一个:
sqlalchemy.exc。ArgumentError: ColumnDefault可能不是服务器端的默认类型。
我是要使用https://docs.sqlalchemy.org/en/14/core/defaults.html#sqlalchemy.schema.DefaultClause还是sqlalchemy.schema.DefaultGenerator
?-或者它根本就不是default=
/等同的?
如果您想传递Indentity()
作为关键字参数,请使用server_default
:
import sqlalchemy as sa
engine = sa.create_engine('postgresql+psycopg2:///test', echo=True, future=True)
t = sa.Table(
't', sa.MetaData(), sa.Column('id', sa.Integer, server_default=sa.Identity(), primary_key=True)
)
t.create(engine)
输出2022-12-18 21:27:32,265 INFO sqlalchemy.engine.Engine BEGIN (implicit)
INFO:sqlalchemy.engine.Engine:BEGIN (implicit)
2022-12-18 21:27:32,266 INFO sqlalchemy.engine.Engine
CREATE TABLE t (
id INTEGER GENERATED BY DEFAULT AS IDENTITY
PRIMARY KEY (id)
)
...
GitHub源代码