首页 > 解决方案 > 如何将 sqlalchemy 查询作为字典返回?

问题描述

我正在使用 python 中的panoply SDKPanoply 网站文档

Panoply 是一个数据仓库,我使用 python 中的 SDK 直接写入仓库。我正在使用sqlalchemy从 mysql 数据库中查询我的结果,并且 SDK 要求结果在字典中。

{ "column": "value" }

到目前为止我的代码:

>>>from sqlalchemy import create_engine

>>>result = engine.execute("""\
SELECT 
    creation_date, 
    COUNT(*) AS total
FROM SomeTable
GROUP BY 1 
""")

>>>result = result.fetchall()
>>>result
[('2020-02-05', 41606), ('2020-02-06', 31223)]
>>>cols = result.keys()
>>>cols
['creation_date', 'trips']

整体示例:

import panoply
conn = panoply.SDK( "APIKEY", "APISECRET" )
conn.write( "tablename", { "foo": "bar" } )

如何将我的sqlalchemy查询转换为 panoply 需要写入数据库的格式?

标签: pythonpython-3.xdictionarysqlalchemy

解决方案


由于 panoply 支持一次只写入一行,因此无需使用该fetchall方法一次将所有行检索到内存中,这可能会非常低效。相反,遍历游标并使用该items方法将每一行检索为键值元组序列,以便您可以使用构造函数构造一个 dict 以dict输入 panoply 的write方法:

for row in result:
    conn.write('tablename', dict(row.items()))

推荐阅读