2014-09-10 14 views
5

Używam pyodbc do łączenia się z bazą danych i wydzielania z niej pewnych danych.Błąd sekwencji funkcji w PYODBC

Oto mój kod:

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() 

I mam następujący błąd po uruchomić powyższy kod:

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

mogę wiedzieć, co spowodowało taki problem i jak mogę to naprawić?

Dzięki.

Odpowiedz

12

Uważam, że Twoim problemem są dziwne instrukcje commit. Podczas wstawiania lub aktualizowania rekordów należy wybrać tylko commit, a nie , a nie.

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

Ponadto, w przyszłości, przy użyciu commit, zarówno cursor.commit i con.commit zrobić to samo, wystarczy tylko jeden.

Wreszcie, ja przyzwyczaić do wywoływania wykonać z drugim arguement jako krotki:

cursor.execute(SQL_command, (queueNumber,)) 

Droga masz to działa na pyodbc ale nie jest standardem DB API.

Powiązane problemy