Сериализация в словарь результата хранимой процедуры с использованием sqlalchemy - PullRequest
0 голосов
/ 17 апреля 2019

Я хранил процедуру в базе данных mysql и использую sqlalchemy для получения результата.

    connection = db.engine.raw_connection()
    cursor = connection.cursor()
    cursor.callproc('catalog_get_products_on_catalog', [2000, 10, 0])
    results = cursor.fetchall()
    cursor.close()
    print(results)

Я получаю результат в виде кортежа:

(10, 'abcd')

Для нормального результата sqlalchemy зефир может использоваться для сериализации результата в словарь, возможно ли преобразовать кортеж в словарь, определив схему в зефире?

1 Ответ

0 голосов
/ 17 апреля 2019

Зефир в настоящее время, похоже, не обладает такой функциональностью. Работают следующие альтернативы:

data = db.session.execute(sqlalchemy.text("CALL catalog_get_products_on_catalog(:inShortProductDescriptionLength, :inProductsPerPage, :inStartItem)"),
                                 {'inShortProductDescriptionLength':20, 'inProductsPerPage':10, 'inStartItem':0}).fetchall()

results = []
for row_number, row in enumerate(data):
    results.append({})
    for column_number, value in enumerate(row):
        results[row_number][row.keys()[column_number]] = value

ОБНОВЛЕНИЕ: Это можно сделать просто,

results = [dict(row) for row in data]

Или

results = [*map(dict,data)]

...