我正在查看https://docs.sqlalchemy.org/en/14/core/type_basics.html#sqlalchemy.types.Enum和https://docs.sqlalchemy.org/en/14/core/metadata.html#sqlalchemy.schema.Column.init,但是我看不出下面的尝试有什么等价的东西:
Column(name='id', type_=String, server_default=Enum(("foo", "bar")))
我尝试了default=server_default=Enum(("foo", "bar"))
,但收到以下错误消息:
sqlalchemy.exc.ArgumentError: Argument 'arg' is expected to be one of type '<class 'str'>' or '<class 'sqlalchemy.sql.elements.ClauseElement'>' or '<class 'sqlalchemy.sql.elements.TextClause'>', got '<class 'sqlalchemy.sql.sqltypes.Enum'>'
我是要使用https://docs.sqlalchemy.org/en/14/core/defaults.html#sqlalchemy.schema.DefaultClause或sqlalchemy.schema.DefaultGenerator
,还是根本不打算使用默认值/等效值?
1条答案
按热度按时间hs1ihplo1#
如果后端数据库没有本地ENUM类型,SQLAlchemy可以自动将枚举值存储为字符串。
Enum
类型将使用后端的本地“ENUM”类型(如果有);否则,它使用VARCHAR数据类型。因此,对于像SQLite这样没有本地ENUM类型的数据库,列
type_
仍然声明为Enum
: