我正在研究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格式时,我遇到了很多问题。请提出建议。
答案 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中,检查输入数据的格式是否正确,并以标准格式发送响应。
检查这些库: