【问题标题】:How to convert SQLAlchemy data into JSON format?如何将 SQLAlchemy 数据转换为 JSON 格式?
【发布时间】:2019-05-17 18:56:42
【问题描述】:

我正在研究 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 格式时遇到了很多问题。请提出建议。

【问题讨论】:

  • 如果不详细说明您的问题,我们无法提供帮助。

标签: python sqlalchemy


【解决方案1】:

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

喜欢第一个元组就像

('layout-3',
 {'filtering': ['Sub Strategye', 'PM Strategy'],
  'sorting': 'mv_price',
  'theme': 'red'},
 'RT',
 3,
 0,
 1,
 1)

如果要将整个数据原样转换为json,可以使用json模块dumps函数

import json
jsn_data = json.dumps(data)

您的元组列表被转换为 json

[["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格式作为键值对,首先需要在python字典中转换结果然后使用json.dumps(dictionary_Var)

【讨论】:

  • 如何将结果转换成字典?
  • 创建字典,Python字典就像hashmapkey->value pair,所以你必须根据你的数据需求添加每个值对应的键。您可以遍历数据并创建字典。 dct = dict() dct['Name'] = 'My_name' dct['phone_num'] = [908934335,9867347343], dct['id'] = 'My_id' 然后你可以 json 转储 dct
【解决方案2】:

你要完成的事情叫做“序列化”。

如果您只想将 json 转储到响应中,可以按照 Sudhanshu Patel 的回答。

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

检查这些库:

【讨论】:

  • 请检查 Marshmallow 网站上的代码 sn-ps,它有一个很棒的文档,它将更好地阐明这个概念。
猜你喜欢
  • 2011-10-15
  • 1970-01-01
  • 2016-08-05
  • 2013-03-13
  • 1970-01-01
  • 1970-01-01
  • 2014-02-27
  • 2011-08-12
  • 1970-01-01
相关资源
最近更新 更多