2014-09-10 2 views
5

pyodbc을 사용하여 데이터베이스에 연결하고 데이터베이스에서 특정 데이터를 추출합니다. 여기 PYODBC의 함수 시퀀스 오류

내 코드입니다 :

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

내가 위의 코드를 실행 한 후 나는 오류 다음 가지고 :

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

내가 같은 문제의 원인을 알 수 있으며, 내가 그것을 어떻게 해결할 수 있습니까?

감사합니다.

답변

12

나는 귀하의 문제가 이상한 commit 진술이라고 생각합니다. 레코드를 삽입하거나 업데이트 할 때 commit 만 필요합니다. 이 아닌을 선택하십시오.

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

또한, 미래에 commit, 모두 cursor.commitcon.commit이 같은 일을 사용하는 경우, 당신은 단지 하나가 필요합니다.

마지막으로, 나는이 튜플로 두 번째 아규먼트와 함께 실행 호출에 익숙해 것 :

cursor.execute(SQL_command, (queueNumber,)) 

방법 당신이 pyodbc을 위해 작동하지만 DB의 API 표준 아닙니다있다.