All*_*Lin 2 python postgresql json sqlalchemy
我想将我的SQLAlchemy postgres JSON列的默认值设置为空字典.
from sqlalchemy.dialects.postgresql import JSON
info = Column(JSON, default='{}')
info = Column(JSON, default={})
Run Code Online (Sandbox Code Playgroud)
这些都不奏效.
如果有人像我一样与default-columnserver_default结合使用JSONB,那么似乎有效的方法如下:
from sqlalchemy import text
info = Column(JSONB, default=text("'{}'::jsonb"), server_default=text("'{}'::jsonb"))
Run Code Online (Sandbox Code Playgroud)
上面的方法(default=dict或default=lambda: {})对我不起作用。尤其是与蒸馏器结合使用。我总是收到错误:(
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 'type'>'或者function代替typelambda)。
我发现使用默认{}值定义 JSON 非空(如果适用)列的最简单方法是(使用 SQLAlchemy 1.3.x 测试):
info = db.Column(JSON, nullable=False, server_default='{}')
Run Code Online (Sandbox Code Playgroud)
使用default = lambda:{}有效.在评论中归功于univerio.
| 归档时间: |
|
| 查看次数: |
1830 次 |
| 最近记录: |