SQLalchemy 关键字参数等同于 'Column('id', Integer, Identity())'



尝试: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源代码

最新更新