繁体   English   中英

如何将 sqlalchemy 自动映射查询结果转换为 json?

[英]How to convert sqlalchemy automap query result to json?

我已经有代表 json-reply model 的表的数据库

我正在使用 Base = automap_base() 来创建这样的类

import simplejson as json
from sqlalchemy.ext.automap import automap_base
from sqlalchemy.orm import Session
from sqlalchemy import create_engine
from sqlalchemy.orm.attributes import QueryableAttribute


Base = automap_base()

# engine, suppose it has two tables 'user' and 'address' set up
engine = create_engine("mysql+pymysql://test:test@localhost/test")

# reflect the tables
Base.prepare(engine, reflect=True)

session = Session(engine)
Person = Base.classes.person

persons = session.query(Person).all()
for person in persons:
    print (person.name)

s = json.dumps([dict(r) for r in persons.values()])

我有这个错误:

Traceback (most recent call last):
  File "c:/Users/rusagm/pythonProjects/sqlalchemytest/send.py", line 24, in <module>
    s = json.dumps([dict(r) for r in persons])
  File "c:/Users/rusagm/pythonProjects/sqlalchemytest/send.py", line 24, in <listcomp>
    s = json.dumps([dict(r) for r in persons])
TypeError: 'person' object is not iterable

我想从我的 sqlalchemy 自动映射查询创建 json。 我应该怎么办?

您可能会执行以下操作:

import json
from bson import json_util
json.dumps([{i:v for i, v in r.__dict__.items() if i in r.__table__.columns.keys()} for r in persons], default=json_util.default)

但正如建议的那样,pandas dataframe to_json 会更好。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM