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

相关推荐
TCChzp2 个月前
FastApi SQLAlchemy SQLite
sqlite·fastapi·sqlalchemy
阿桂天山3 个月前
怎样用python+sqlalchemy获得mssql视图对应物理表关系(二)
数据库·python·sqlserver·sqlalchemy·视图
可愛小吉3 个月前
Python 课程18-SQLAlchemy
开发语言·python·sqlalchemy
youhebuke2253 个月前
sqlalchemy session.remove
sqlalchemy
AI原吾3 个月前
掌握SQLAlchemy:Python数据库的魔法师
python·前端框架·sqlalchemy
麦麦大数据4 个月前
从0开始搭建vue + flask 旅游景点数据分析系统(七):可视化前后端对接实现
前端·vue.js·scrapy·flask·echarts·sqlalchemy
程序员的开发手册6 个月前
新手教学系列——慎用Flask-SQLAlchemy慢日志记录
数据库·python·flask·sqlalchemy
youhebuke2256 个月前
SQLAlchemy pool_pre_ping
数据库·oracle·sqlalchemy
NLP工程化6 个月前
SQLAlchemy(alembic)和Flask-SQLAlchemy入门教程
python·flask·sqlalchemy·alembic