2014-09-10 86 views
5

Veritabanına bağlanmak ve belirli verileri ayıklamak için pyodbc kullanıyorum. İşte İşlev sırası hatası PYODBC

benim kodudur:

con = pyodbc.connect("driver={SQL Server};server= MyServer;database= MyDatabase;trusted_connection=true") 

cursor = con.cursor() 

SQL_command = """ 
         SELECT RowID = ISNULL 
         (
          (
           SELECT TOP 1 RowID 
           FROM [MyDatabase].[admin].[MyTable] 
           WHERE [queue] = ? and processed IS NULL 
         ) 
          ,-1 
        ) 
        """ 

cursor.execute(SQL_command, queueNumber) 

cursor.commit() 

con.commit() 

result_set = cursor.fetchall() 

Ve kodunun üzerinde çalıştırdıktan sonra ben hata aşağıdaki var:

pyodbc.Error: ('HY010', '[HY010] [Microsoft][ODBC SQL Server Driver]Function sequence error (0) (SQLFetch)')

Böyle soruna neden olduğunu öğrenebilir miyim ve bunu nasıl düzeltebilirim?

Teşekkürler.

cevap

12

Sorununuzun garip commit ifadeleri olduğuna inanıyorum. kayıtlarını eklerken veya güncellerken commit yalnızca kayıtlarını seçmeniz gerekir.

cursor.execute(SQL_command, queueNumber) 
result_set = cursor.fetchall() 

Ayrıca gelecekte commit, hem cursor.commit ve con.commit aynı şeyi yapmak kullanırken, sadece bir ihtiyaç.

Son olarak, bir başlığın ikinci argüman ile yürütmek çağıran alışması ediyorum:

cursor.execute(SQL_command, (queueNumber,)) 

yolu bunu pyodbc için çalışır ama DB API standart değil var.

İlgili konular