Как вернуть sqlalchemy запрос в виде словаря? - PullRequest
1 голос
/ 07 февраля 2020

Я работаю с защитным SDK в python. Документация веб-сайта Panoply

Panoply - это хранилище данных, и я использую SDK из python для прямой записи в хранилище. Я использую 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']

Panoply Пример:

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

Как мне получить мой sqlalchemy запрос в формате, необходимом для записи в базу данных panoply?

Ответы [ 2 ]

2 голосов
/ 07 февраля 2020

Поскольку panoply поддерживает запись только одной строки за раз, нет необходимости использовать метод fetchall для извлечения всех строк в память одновременно, что может быть очень неэффективно. Вместо этого итерируйте курсор и используйте метод items для извлечения каждой строки в виде последовательности кортежей ключ-значение, чтобы можно было создать dict с помощью конструктора dict для подачи в метод write panoply:

for row in result:
    conn.write('tablename', dict(row.items()))
0 голосов
/ 07 февраля 2020

Надеюсь, это поможет ...

>>> rows = result.fetchall()
>>> results = [dict(row) for row in rows]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...