簡體   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