PYODBC中的函数序列错误

Cha*_*ame 10 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()
Run Code Online (Sandbox Code Playgroud)

运行上面的代码后出现以下错误:

pyodbc.Error:('HY010','[HY010] [Microsoft] [ODBC SQL Server驱动程序]函数序列错误(0)(SQLFetch)')

我可以知道是什么导致了这样的问题,我该如何解决?

谢谢.

Mar*_*ark 24

我相信你的问题是奇怪的commit陈述.您只需commit在插入或更新选择的记录时.

cursor.execute(SQL_command, queueNumber)
result_set = cursor.fetchall()
Run Code Online (Sandbox Code Playgroud)

此外,将来使用commit,两者cursor.commitcon.commit做同样的事情时,你只需要一个.

最后,我习惯于将第二个争论作为元组调用execute:

cursor.execute(SQL_command, (queueNumber,))
Run Code Online (Sandbox Code Playgroud)

它的工作方式适用pyodbc但不是DB API标准.