使用sqlalchemy序列化为字典存储过程结果

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用sqlalchemy序列化为字典存储过程结果相关的知识,希望对你有一定的参考价值。

我在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结果,可以使用marshmallow将结果序列化为字典,是否可以通过在marshmallow中定义模式将元组转换为字典?

答案

Marshmallow目前似乎没有这种功能,以下替代工作:

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)]

以上是关于使用sqlalchemy序列化为字典存储过程结果的主要内容,如果未能解决你的问题,请参考以下文章

如何将 SqlAlchemy 结果序列化为 JSON?

Newtonsoft Json 将字典反序列化为来自 DataContractJsonSerializer 的键/值列表

如何根据列的值过滤 SQLAlchemy 结果?

sqlalchemy 调用 mssql存储过程如何获取返回值?

Unity 将嵌套字典序列化为 JSON

如何将字典的值序列化为json(使用json.net)[重复]