将SQLAlchemy Model Object 转成 JSON
from sqlalchemy.orm import class_mapper
def serialize(model):
"""Transforms a model into a dictionary which can be dumped to JSON."""
# first we get the names of all the columns on your model
columns = [c.key for c in class_mapper(model.__class__).columns]
# then we return their values in a dict
return dict((c, getattr(model, c)) for c in columns)
将对象传入就会返回一个 dict 类型的数据,再将它转成 json 就可以了。
使用方法
d=serialize(SQLAlchemyModelobject)
jsondumps(d)
思路来源 http://stackoverflow.com/questions/10252010/serializing-python-object-instance-to-json
Qurey 查询后的结果变成 JSON
单个对象
def to_json(model):
""" Returns a JSON representation of an SQLAlchemy-backed object. """
json = {}
# json['fields'] = {}
# json['pk'] = getattr(model, 'id')
for col in model._sa_class_manager.mapper.mapped_table.columns:
# json['fields'][col.name] = getattr(model, col.name)
json[col.name] = getattr(model, col.name)
# return dumps([json])
return json
一组对象
def to_json_list(model_list):
json_list = []
for model in model_list:
json_list.append(to_json(model))
return json_list
使用演示
#读取一个资源
def get(self,id):
session = common.db.getDBSession()
appkey=session.query(AppKey).filter_by(id=id).first()
session.close()
result= common.util.to_json(appkey)
return result
#获取全部资源
def get(self):
session =common.db.getDBSession()
appkeylist =session.query(AppKey).all()
session.close()
result = common.util.to_json_list(appkeylist)
return result