我从使用pyodbc连接到SQL Server的python代码向我的数据库发出多个查询。
cursor = connection.connect(connection_string)
qry1 = "Select * FROM Table1"
rows = cursor.execute(qry1).fetchall()
for row in rows:
qry2 = "Select * FROM Table2"
rows2 = cursor.execute(qry2).fetchall()
for row2 in rows2:
print row2
这样可以成功完成两个查询。
我怎样才能重用游标对象?
当我跑步时,我会想到
rows2 = cursor.execute(qry2).fetchall()
rows
和rows2
现在指向相同的东西(对象)。
编辑:来自pyodbc网站的有用信息
由于这会将所有行读入内存,因此如果有很多行则不应使用它。考虑迭代遍历行。但是,它可以释放Cursor,因此您可以在处理结果行之前执行第二个查询。
答案 0 :(得分:1)
我认为你的最后一个语句是假的,因为.fetchall()
返回一个包含游标查询返回的所有行的新列表,之后你可以重用游标。 (但是在考虑重用它们之前我会测试一个新光标的成本。)[好吧,我不知道这是否真的如此,但它适用于dbapi兼容的sqlite3绑定]