繁体   English   中英

我可以在与pyodbc和MS SQL Server的一个连接上使用多个游标吗?

[英]Can I use multiple cursors on one connection with pyodbc and MS SQL Server?

我在python 2.6上使用pyodbc连接到Microsoft SQL Server2005。我打开一个连接,创建几个游标:

c1 = connection.cursor()
c2 = connection.cursor()

然后在第一个游标上运行查询。

c1.execute("select * from foo")

现在,我在第二个游标上运行查询:

c2.execute("select * from bar")

...并且我得到一个错误:“连接正忙于另一个hstmt的结果。”

在执行c1.fetchall()c1.close()之后,可以使用c2。

我的问题是:为什么只允许一次使用一个游标,并且始终可以重复使用同一游标,为什么还要允许在一个连接上创建多个游标? 而且,如果我想为另一个查询的结果的每一行运行一个查询,如下所示:

for x in c1.execute(...):
    for y in c2.execute(...):

我真的必须创建到同一数据库的多个连接吗?

这个家伙

游标对象用于执行SQL语句。 ODBC和pyodbc允许每个连接使用多个游标,但并非所有数据库都支持此功能。

并且可以确定并发游标可以受以下支持:

import pyodbc
connection = pyodbc.connect(...)
how_many = connection.getinfo(pyodbc.SQL_MAX_CONCURRENT_ACTIVITIES)
print(how_many)

我自己的实践从未遇到过使用多个数据库游标的必要性。 这类问题过去通常通过复杂的SQL查询(联接,组)解决。 或者(如果可以忽略性能问题),可以使用几个简单的查询。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM