gpt4 book ai didi

Python 数据库 API v2 > 如果迭代期间执行的查询没有返回结果,则结果集迭代将停止

转载 作者:行者123 更新时间:2023-12-01 03:56:58 24 4
gpt4 key购买 nike

我正在使用Snowflake Connector for Python (实现对 Python 数据库 API v2 规范的支持)在一个脚本中,该脚本从一个表中提取大量记录,迭代结果集,并针对返回的每一行查询另一个表,该表可能返回也可能不返回任何结果。

如果辅助查询没有返回结果,则即使没有抛出错误,也会停止对第一个查询返回的结果的迭代。

以下代码演示了我遇到的问题...

cur = cnx.cursor()
foobars = cur.execute("SELECT * FROM foobar")
for foobar in foobars:
foobarId = foobar[0]

# Iteration over foobars stops if no records are returned for the following
foobaz = cur.execute("SELECT * FROM foobaz WHERE foobarId = %s", (foobarId))
if foobaz.rowcount != 0:
# Iterate over foobaz here

如果抛出异常,我可以通过捕获错误并继续处理下一个结果来处理这种情况。如果没有抛出异常,如何处理这种情况?

最佳答案

游标存储最后一次SELECT的状态。因此,您必须为并行 SELECT 创建一个新游标:

cur = cnx.cursor()
cur.execute("SELECT * FROM foobar")
for foobar in cur:
foobarId = foobar[0]

cur2 = cnx.cursor()
cur2.execute("SELECT * FROM foobaz WHERE foobarId = %s", (foobarId,))
for foobaz in cur2:
# Iterate over foobaz here

关于Python 数据库 API v2 > 如果迭代期间执行的查询没有返回结果,则结果集迭代将停止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37283958/

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