gpt4 book ai didi

python - 如何将 SQLAlchemy 结果行转换为嵌套的字典

转载 作者:行者123 更新时间:2023-12-04 21:02:22 26 4
gpt4 key购买 nike

我正在评估在异步/等待中使用 SQLAlchemy 的潜在设置 FastAPI应用程序。我目前正在使用 declarative_base 编写模型和查询类,然后使用 Databases 执行查询(模型类的语法更易读且易于编写;直接使用 SQLAlchemy 核心表不是我最喜欢的事件)。这一切都很好。

在这一点上,我有 SQLAlchemy 结果行,但我需要将它们转换为通用字典,由于急切加载的关系而可能嵌套(我将在此环境中仅支持类型)。我不能使用 SQLAlchemy 的 ORM,因为 1) 我没有 enginesession ;和 2) ORM 假设它可以在需要加载对象时访问数据库,而在 async/await FastAPI 应用程序中则不是这种情况。

有没有人有关于如何实现这一点的想法或指示?我正在努力弄清楚如何将结果行与特定的关系键相关联,特别是。我一直在 Sqlalchemy 内部寻找想法,但它非常不透明,因为其中很多都假设整个层的对象缓存和 session /引擎管理在我的设置中不存在。

我可以使用想法的两件事:

  • 如何映射列名称,如 table_1_column_name到特定型号及其属性
  • 如何检测和映射关系(可能深度不止一层)

  • 感谢您的任何帮助,您可以提供!

    更新:你可以在这里找到一个可运行的例子: https://gist.github.com/onecrayon/dd4803a5099061fa48d52f2d4bc2396b (有关我需要弄清楚如何通过将查询列名称映射到 SQLAlchemy 模型上的名称来将 RowProxy 转换为嵌套 dict 的相关位置,请参阅第 92-109 行)。

    最佳答案

    如果你是 db first,sqlalchemy execute 方法通常会返回一个 Result Proxy 对象,你可以通过它的方法获取它的结果,例如 fetchone、first、fetchall,然后将其转换为 list 或 dict。
    您还可以查看 this dock

    关于python - 如何将 SQLAlchemy 结果行转换为嵌套的字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57228874/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com