簡體   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