PYODBC中的函数序列错误

时间:2014-09-10 15:13:00

标签: python sql 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   驱动程序]函数序列错误(0)(SQLFetch)')

我可以知道导致此类问题的原因,我该如何解决?

感谢。

1 个答案:

答案 0 :(得分:21)

我相信你的问题是奇怪的commit陈述。插入或更新记录时,您只需要commit

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

此外,将来使用commit,同时cursor.commitcon.commit执行同样的操作时,您只需要一个。

最后,我习惯于以第二个争论作为元组调用执行:

cursor.execute(SQL_command, (queueNumber,))

它的使用方式适用于pyodbc,但不是DB API标准。