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

相关推荐
玄同7652 天前
深入理解 SQLAlchemy 的 relationship:让 ORM 关联像 Python 对象一样简单
人工智能·python·sql·conda·fastapi·pip·sqlalchemy
曲幽15 天前
FastAPI数据库实战:从SQLAlchemy原理到高效连接管理,告别性能瓶颈
python·sqlite·flask·fastapi·web·sqlalchemy·db
曲幽21 天前
FastAPI + SQLite:从基础CRUD到安全并发的实战指南
python·sqlite·fastapi·web·jwt·form·sqlalchemy·oauth2
逻极22 天前
数据分析项目:Pandas + SQLAlchemy,从数据库到DataFrame的丝滑实战
python·mysql·数据分析·pandas·sqlalchemy
逻极1 个月前
FastAPI + SQLAlchemy 现代API项目实战:从零到上手的Python MySQL开发指南
python·mysql·fastapi·异步·sqlalchemy
闲人编程2 个月前
Flask扩展开发:从零编写自己的Flask扩展
后端·python·flask·sqlalchemy·config·login·codecapsule
曲幽2 个月前
Flask数据库操作进阶:告别裸写SQL,用ORM提升开发效率
python·sql·sqlite·flask·web·sqlalchemy
战南诚2 个月前
如何查看正在执行的事务
python·flask·sqlalchemy
风轻扬7773 个月前
SQLAlchemy2.0使用
python·sqlalchemy·orm框架