JSON字段定义
python
from sqlalchemy import Column, JSON
class Table(Base):
__tablename__ = "table"
__table_args__ = ({"comment": "表名称"})
...
extra = Column(JSON, comment="其他属性")
...
局部序列化
python
def create(extra):
table= Table()
# 直接存储,sqlalchemy会调用json.dumps序列化后存储,中文会被编码,修改ensure_ascii=False中文显示正常
# table.extra = extra
table.extra = json.dumps(extra, ensure_ascii=False)
全局序列化
python
# app.config 中设置SQLALCHEMY_ENGINE_OPTIONS
SQLALCHEMY_ENGINE_OPTIONS = {
# 全局写入json时的序列化操作
"json_serializer": lambda obj: json.dumps(obj, ensure_ascii=False)
}
设置json_serializer
后,可以使用table.extra = extra
保存json数据。
最终json_serializer
会被传递至create_engine
中去,官网文档中搜索json_serializer
。