6

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

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

DBAPI 游标将在其所有结果行(如果有)用尽时由 ResultProxy 关闭。

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

4

2 回答 2

10

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

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

于 2012-04-28T04:55:29.430 回答
0

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

于 2012-04-28T02:17:05.433 回答