我正在尝试使用SQLAlchemy调用返回多个结果集的存储过程。如果重要的话,我正在使用PyODBC和FreeTDS。我使用带有“exec”的原始查询调用execute()方法,在会话对象上调用我的存储过程并返回ResultProxy对象。
使用原始pyodbc游标,我可以调用nextset()函数前进到下一个结果集。我认为使用从SQLAlchemy返回的ResultProxy无法做同样的事情。的确,docs说:
当所有的DBAPI游标都被ResultProxy关闭时 结果行(如果有的话)已用尽。
有没有办法用SQLAlchemy读取多个结果集,还是我必须用原始DBAPI执行此查询?
答案 0 :(得分:9)
对nextset()的支持是ticket 1635。已经两岁了。它包含一个需要更新的部分补丁,特别是与一个执行选项一起工作,该选项传递该语句将返回多个结果集的提示,以便resultproxy的现有自动关闭行为可以保持默认值。该功能还需要大量的测试。
此功能没有重大技术障碍,但对此用例通常没什么兴趣。所以目前你需要坚持原始光标,直到人们对此功能表达足够的兴趣,再次为它增添动力。
答案 1 :(得分:0)
您是否阅读过http://docs.sqlalchemy.org/en/rel_0_7/core/connections.html?highlight=resultproxy#basic-usage?您可以迭代ResultProxy
个对象,关闭它们等等。