如何将SQLAlchemy数据转换为JSON格式?

时间:2019-05-17 10:26:45

标签: python sqlalchemy

我正在研究SQLAlchemy,想从数据库中获取数据并将其转换为JSON格式。

我有以下代码:

db_string = "postgres://user:pwd@10.**.**.***:####/demo_db"
Base = declarative_base()
db = create_engine(db_string)  

record = db.execute("SELECT name, columndata, gridname, ownerid, issystem, ispublic, isactive FROM col.layout WHERE (ispublic=1 AND isactive=1) OR                                            (isactive=1 AND ispublic=1 AND ownerid=ownerid);")

for row in record:
    result.append(row)

print(result)

数据以这种格式显示:

[('layout-1', {'theme': 'blue', 'sorting': 'price_down', 'filtering': ['Sub Strategye', 'PM Strategy']}, 'RealTimeGrid', 1, 0, 1, 1), ('layout-2', {'theme': 'orange', 'sorting': 'price_up', 'filtering': ['FX Rate', 'Start Price']}, 'RealBalancing Grid', 2, 0, 1, 1), ('layout-3', {'theme': 'red', 'sorting': 'mv_price', 'filtering': ['Sub Strategye', 'PM Strategy']}, 'RT', 3, 0, 1, 1)]

但是将上述结果转换为JSON格式时,我遇到了很多问题。请提出建议。

2 个答案:

答案 0 :(得分:1)

您的数据基本上是一个元组列表。

像第一个元组一样

SELECT T.date,
    T.product,
    T.value
FROM (
    SELECT T.date,
            T.product,
            T.value,
            row_number() OVER(partition by T.date order by T.value desc) AS grouped
    FROM dbo.sales AS T
    ) AS T
WHERE T.grouped <= 5;

如果要将全部数据转换为json,可以使用('layout-3', {'filtering': ['Sub Strategye', 'PM Strategy'], 'sorting': 'mv_price', 'theme': 'red'}, 'RT', 3, 0, 1, 1) 模块json函数

dumps

您的元组列表将转换为json

import json
jsn_data = json.dumps(data)

但是如果您需要json formate作为键值对,则首先需要将结果转换为python字典,然后使用[["layout-1", {"theme": "blue", "sorting": "price_down", "filtering": ["Sub Strategye", "PM Strategy"]}, "RealTimeGrid", 1, 0, 1, 1], ["layout-2", {"theme": "orange", "sorting": "price_up", "filtering": ["FX Rate", "Start Price"]}, "RealBalancing Grid", 2, 0, 1, 1], ["layout-3", {"theme": "red", "sorting": "mv_price", "filtering": ["Sub Strategye", "PM Strategy"]}, "RT", 3, 0, 1, 1]]

答案 1 :(得分:-1)

您要完成的工作称为“序列化”。

如果您只想将json转储为响应,则可以遵循Sudhanshu Patel的回答。

但是,如果您打算生产更复杂的应用程序,请考虑使用序列化库。您将能够将请求中的数据输入到db中,检查输入数据的格式是否正确,并以标准格式发送响应。

检查这些库: