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结果转json的更多相关文章
- 记录Python学习中的几个小问题
记录Python学习中的几个小问题,和C#\JAVA的习惯都不太一样. 1.Django模板中比较两个值是否相等 错误的做法 <option value="{{group.id}}&q ...
- Flask笔记(一)
first_flask_project.py # 从flask这个包中导入Flask这个类 # Flask这个类是项目的核心,以后很多操作都是基于这个类的对象 # 注册url.注册蓝图等都是基于这个类 ...
- 第三章 URL与视图
配置文件两种方式详解 先讲两种直接传参: 直接简单传参 app =Flask(__name__) app.config['DEBUG']=True app.config.update( DEBUG=t ...
- 使用SqlAlchemy时如何方便的取得dict数据、dumps成Json
使用Sqlalchemy可以方便的从数据库读取出python对象形式的数据(吐槽:说实话对象形式也没多方便,还不如我之前从关系型数据库直接读取出dict形式的数据用起来方便,具体参见我以前的文章htt ...
- tornado with MySQL, torndb, django model, SQLAlchemy ==> JSON dumped
现在,我们用torndo做web开发框架,用他内部机制来处理HTTP请求.传说中的非阻塞式服务. 整来整去,可谓之一波三折.可是,无论怎么样,算是被我做成功了. 在tornado服务上,采用三种数据库 ...
- 极简单的方式序列化sqlalchemy结果集为JSON
继承 json.JSONEncoder 实现一个针对sqlalchemy返回类型的处理方式. sqlalchemy的返回类型有大都有两种,一种是Model对象,一种是Query集合(只查询部分字段). ...
- python SQLAlchemy对象映射和json.dumps无法序列化问题解决
from flask import Flask from flask_sqlalchemy import SQLAlchemy import Config2 import pymysql import ...
- 【Python】极简单的方式序列化sqlalchemy结果集为JSON
继承 json.JSONEncoder 实现一个针对sqlalchemy返回类型的处理方式. sqlalchemy的返回类型有大都有两种,一种是Model对象,一种是Query集合(只查询部分字段). ...
- sqlalchemy 转json 的几种常用方式
sqlalchemy 转json 的几种常用方式 # -*- coding:utf-8 -*- import datetime from flask import Flask, json, jsoni ...
随机推荐
- oracle11g忘记sys密码
目 录 1 以管理员身份运行cmd窗口 2 启动sqlplus并敲入一系列命令 3 特别注意 1以管理员身份运行cmd窗口 我安装的是oracle11.2版本,sqlplus.exe所在目录是:I: ...
- .NET:强签名程序集的加载问题 之 版本重定向
背景 多数解决方案会包含多个项目,某些支持插件架构的解决方案中,更是包含多个插件项目,这些项目会使用一些第三方NuGet Packages,如果管理不慎,解决方案中会出现多个版本的引用,这在编译期间不 ...
- 趣谈Java变量的可见性问题
了解过多线程的我们,对synchorized,sleep和valatile都比较了解,但是当这三个名词和“Java变量得可见性”的话题联系在一起不知道大家是否还可以保持大脑清晰??? 最近看到一个关于 ...
- 实用ExtJS教程100例-005:自定义对话框Ext.MessageBox.show
我们对ExtJS对话框进行了三篇演示: MessageBox的三种用法 进度条对话框Ext.MessageBox.progress 等待对话框Ext.MessageBox.wait 通过上面三篇内容的 ...
- Could not install packages due to an Environment Error: [Errno 13] Permission denied 解决方案
执行pip install 报错如下: Could not install packages due to an Environment Error: [Errno 13] Permission de ...
- Caffe常用层参数介绍
版权声明:本文为博主原创文章,转载请注明出处. https://blog.csdn.net/Cheese_pop/article/details/52024980 DATA crop:截取原图像中一个 ...
- [转]nginx下的url rewrite
转:http://zhengdl126.iteye.com/blog/698206 if (!-e $request_filename){rewrite "^/index\.html&quo ...
- cannot be resolved. It is indirectly referenced from required .class files
缺少引用. 把缺少的引用在导入一下...如果是mavan 在当前moudle里也要把 dependency加进来
- 奇怪吸引子---AnishchenkoAstakhov
奇怪吸引子是混沌学的重要组成理论,用于演化过程的终极状态,具有如下特征:终极性.稳定性.吸引性.吸引子是一个数学概念,描写运动的收敛类型.它是指这样的一个集合,当时间趋于无穷大时,在任何一个有界集上出 ...
- 升级项目到Vs2010,编译时出现:MSB6006: “LC.exe”已退出,解决方法
最近装了Vs2010 准备把一些项目,升级到.Net 4.0 在编译时,总是出现 MSB6006: “LC.exe”已退出 的错误.很是郁闷.刚开始以为是第三方控件的,去掉了,也不行.后来在网上找了一 ...