![](/img/trans.png)
[英]pyodbc connection to MS SQL Server running on a docker container
[英]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.