pyodbc光标重用

时间:2012-01-18 19:46:32

标签: python sql-server-2008-r2 pyodbc

我从使用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()

rowsrows2现在指向相同的东西(对象)。

编辑:来自pyodbc网站的有用信息

  

由于这会将所有行读入内存,因此如果有很多行则不应使用它。考虑迭代遍历行。但是,它可以释放Cursor,因此您可以在处理结果行之前执行第二个查询。

cursor info

1 个答案:

答案 0 :(得分:1)

我认为你的最后一个语句是假的,因为.fetchall()返回一个包含游标查询返回的所有行的新列表,之后你可以重用游标。 (但是在考虑重用它们之前我会测试一个新光标的成本。)[好吧,我不知道这是否真的如此,但它适用于dbapi兼容的sqlite3绑定]