sqlalchemy JSON 字段写入时中文序列化问题

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。

相关推荐
梦想不只是梦与想2 天前
SQLAlchemy:异步、连接池 (四)
数据库·fastapi·sqlalchemy
梦想不只是梦与想4 天前
SQLAlchemy:查询与操作 (三)
数据库·python·sqlalchemy
虎虎(_ _)。゜zzZ1 个月前
SQLAlchemy入门教程
数据库·后端·python·sql·ai·sqlalchemy
ynchyong1 个月前
SQLAlchemy 更新操作:values() 与 ordered_values() 的隐藏差异
python·sqlalchemy·update·values·ordered_values
2601_962099081 个月前
python flask sqlalchemy连接数据库流程介绍
数据库·python·flask·教程·sqlalchemy
兵慌码乱4 个月前
请销假管理系统的分层架构设计与核心模块实现
flask·sqlalchemy·python web·apscheduler·web 系统架构·假期管理系统·审批工作流
曲幽5 个月前
我用了FastApiAdmin后,连夜把踩过的坑都整理出来了
redis·python·postgresql·vue3·fastapi·web·sqlalchemy·admin·fastapiadmin
颂love5 个月前
健康打卡系统项目总结
fastapi·sqlalchemy·全栈开发·dify集成
阿kun要赚马内5 个月前
后端数据操作组合:Pydantic与ORM
后端·python·orm·sqlalchemy
海市公约5 个月前
FastAPI异步ORM增删改实战:从单表操作到一对多关联查询
fastapi·sqlalchemy·pydantic模型·orm增删改·一对多关联·外键与连表·异步session