sqlalchemy JSON 字段写入时中文序列化问题
JSON字段定义
from sqlalchemy import Column, JSONclass Table(Base):__tablename__ = "table"__table_args__ = ({"comment": "表名称"})...extra = Column(JSON, comment="其他属性")...
局部序列化
def create(extra):table= Table()# 直接存储,sqlalchemy会调用json.dumps序列化后存储,中文会被编码,修改ensure_ascii=False中文显示正常# table.extra = extratable.extra = json.dumps(extra, ensure_ascii=False)
全局序列化
# 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
。