sqlalchemy结果转json
网上搜了下,http://blog.csdn.net/liu_xing_hui/article/details/8956107
介绍的很详细,自动一个Encoder给json的dump方法使用,能够实现queryresult转json
import json
from sqlalchemy.ext.declarative import DeclarativeMeta
from datetime import datetime
def new_alchemy_encoder():
_visited_objs = []
class AlchemyEncoder(json.JSONEncoder):
def default(self, obj):
if isinstance(obj.__class__, DeclarativeMeta):
# don't re-visit self
if obj in _visited_objs:
return None
_visited_objs.append(obj)
# an SQLAlchemy class
fields = {}
for field in [x for x in dir(obj) if not x.startswith('_') and x != 'metadata']:
data = obj.__getattribute__(field)
try:
if isinstance(data, datetime):
data = data.strftime('%Y-%m-%d %H:%M:%S')
json.dumps(data) # this will fail on non-encodable values, like other classes
fields[field] = data
except TypeError:
fields[field] = None
return fields
return json.JSONEncoder.default(self, obj)
return AlchemyEncoder
UnReadMsg = self.db.query(Message).filter(Message.uid == self.uid)
msgs = []
for msg in UnReadMsg:
msgs.append(msg)
UnReadMsg = json.dumps(msgs, cls=new_alchemy_encoder(), check_circular=False)
但是新版的sqlalchemy中的queryresult对象加入了json属性,直接能得到json串,棒棒哒
UnReadMsg = self.db.query(Message).filter(Message.uid == self.uid)
msgs = []
for msg in UnReadMsg:
msgs.append(msg.json)
print(msgs)
return JsonResponse(self, 50000, data=msgs)
直接拿到结果爽的不要不要的,不过还是要知道这个dump方式是怎么实现的,这样以后也能处理更复杂的情况
{
"code": 50000,
"data": [
{
"content": "你好啊",
"entry_date": "2017-2-20 20:40",
"msg_id": "2",
"msg_readstatus": "1",
"msg_sendstatus": "1",
"msg_type": "1",
"read_time": "",
"send_time": "2017-2-20 20:40",
"stamped": "0",
"suid": "3",
"uid": "1"
},
{
"content": "好的很",
"entry_date": "2017-2-20 20:41",
"msg_id": "3",
"msg_readstatus": "1",
"msg_sendstatus": "1",
"msg_type": "1",
"read_time": "",
"send_time": "2017-2-20 20:41",
"stamped": "0",
"suid": "2",
"uid": "1"
}
],
"msg": null
}
分类:
SqlAlchemy
标签:
SQLAlchemy
, json
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 字符编码:从基础到乱码解决