Я работаю с защитным 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 запрос в формате, необходимом для записи в базу данных?

1
Jacky 7 Фев 2020 в 05:56

2 ответа

Лучший ответ

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

for row in result:
    conn.write('tablename', dict(row.items()))
2
blhsing 7 Фев 2020 в 03:25

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

>>> rows = result.fetchall()
>>> results = [dict(row) for row in rows]
0
Praphan Klairith 7 Фев 2020 в 03:12