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

相关推荐
I'm Jie15 天前
【已解决】SqlAlchemy 插入 MySQL JSON 字段时 None 变为 ‘null‘ 字符串,WHERE IS NULL 失效
数据库·python·mysql·json·fastapi·sqlalchemy
闲人编程17 天前
SQLAlchemy 2.0核心概念与异步支持
数据库·后端·python·web·异步·sqlalchemy
x_lrong19 天前
SQLAlchemy笔记
笔记·python·sqlalchemy
花酒锄作田21 天前
SQLAlchemy中使用UPSERT
python·sqlalchemy
曲幽25 天前
FastAPI定时任务全攻略:从入门到避开多进程的坑
python·fastapi·web·async·sqlalchemy·lock·apscheduler·works
Wiktok1 个月前
SQLAlchemy+PyMySQL的实用实战示例
python·mysql·sqlalchemy
玄同7651 个月前
深入理解 SQLAlchemy 的 relationship:让 ORM 关联像 Python 对象一样简单
人工智能·python·sql·conda·fastapi·pip·sqlalchemy
曲幽2 个月前
FastAPI数据库实战:从SQLAlchemy原理到高效连接管理,告别性能瓶颈
python·sqlite·flask·fastapi·web·sqlalchemy·db
曲幽2 个月前
FastAPI + SQLite:从基础CRUD到安全并发的实战指南
python·sqlite·fastapi·web·jwt·form·sqlalchemy·oauth2