我正在使用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)')
我可以知道导致此类问题的原因,我该如何解决?
感谢。
答案 0 :(得分:21)
我相信你的问题是奇怪的commit
陈述。插入或更新记录不时,您只需要commit
。
cursor.execute(SQL_command, queueNumber)
result_set = cursor.fetchall()
此外,将来使用commit,
同时cursor.commit
和con.commit
执行同样的操作时,您只需要一个。
最后,我习惯于以第二个争论作为元组调用执行:
cursor.execute(SQL_command, (queueNumber,))
它的使用方式适用于pyodbc
,但不是DB API标准。