描述:
最近使用python orm框架SQLAlchemy时,遇到mysql数据库表字段类型为json类型,python实体类属性对应值为None,但是插入数据库后为‘ NULL‘字符串,而不是真正的NULL
实体类:
from sqlalchemy import Column, DateTime, Float, Integer, JSON, String, text
from sqlalchemy.dialects.mysql import VARCHAR
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()
metadata = Base.metadata
class User(Base):
__tablename__ = 'user'
__table_args__ = {'comment': '用户表'}
id = Column(String(50, 'utf8mb4_general_ci'), primary_key=True)
user_name = Column(VARCHAR(50), comment='用户名')
user_info = Column(JSON, comment='用户信息')
解决办法:
这里的user_info在mysql数据库是json类型,在python中将user_info赋值为: null(),这样该字段为空时,数据库的json类型字段值就为真正的NULL
from sqlalchemy import null
# 用户信息
user_info = null()
完整代码
from sqlalchemy import null
# 生成guid
id = str(uuid.uuid4()).replace('-', '').upper()
# 用户名
name = "张三"
# 用户信息
user_info = null()
# 实体类赋值
user = User(
id=id,
name=name,
user_info=user_info
)
参考资料: