【问题标题】:Is it possible to read multiple result sets using a ResultProxy object in sqlalchemy?是否可以在 sqlalchemy 中使用 ResultProxy 对象读取多个结果集?
【发布时间】:2012-05-08 17:19:02
【问题描述】:

我正在尝试调用一个使用 SQLAlchemy 返回多个结果集的存储过程。如果重要的话,我在下面使用 PyODBC 和 FreeTDS。我使用原始查询调用 execute() 方法,其中“exec”在会话对象上调用我的存储过程并返回 ResultProxy 对象。

使用原始 pyodbc 游标,我可以调用 nextset() 函数前进到下一个结果集。我认为没有办法使用从 SQLAlchemy 返回的 ResultProxy 来做同样的事情。确实,docs 说:

DBAPI 游标将被 ResultProxy 关闭,当它的所有 结果行(如果有)已用尽。

有没有办法使用 SQLAlchemy 读取多个结果集,还是我必须使用原始 DBAPI 执行此查询?

【问题讨论】:

  • 你当时是如何解决这个问题的?
  • 我通过使用一个不同的存储过程来解决它,它只有一个结果集。

标签: python sqlalchemy pyodbc


【解决方案1】:

你读过http://docs.sqlalchemy.org/en/rel_0_7/core/connections.html?highlight=resultproxy#basic-usage 吗?您可以遍历 ResultProxy 对象,关闭它们等。

【讨论】:

    【解决方案2】:

    对 nextset() 的支持是 ticket 1635。它已经两岁了。它包含一个需要更新的部分补丁,特别是与一个执行选项一起工作,该选项传递一个提示,该语句将返回多个结果集,以便结果代理的现有自动关闭行为可以保持默认值。该功能还需要进行大量测试。

    此功能没有重大技术障碍,但通常对此用例很少有人感兴趣。因此,目前您需要坚持使用原始光标,直到人们对该功能表达足够的兴趣以再次为其提供动力。

    【讨论】:

      猜你喜欢
      • 2021-05-01
      • 2022-09-27
      • 2021-03-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多