Ale*_*lex 14 python sql-server pyodbc
我正在尝试使用OUTPUT. 但是,我遇到了 HY010 错误。以下查询/代码是我使用的:
string = """
SET NOCOUNT ON;
DECLARE @NEWID TABLE(ID INT);
INSERT INTO dbo.t1 (Username, Age)
OUTPUT inserted.id INTO @NEWID(ID)
VALUES(?, ?)
SELECT ID FROM @NEWID
"""
cursor.execute(string, "John Doe", 35)
cursor.commit()
id = cursor.fetchone()[0]
Run Code Online (Sandbox Code Playgroud)
最后一行id = cursor.fetchone()[0]导致 HY010 错误(见下文)。任何建议将不胜感激!
pyodbc.Error: ('HY010', '[HY010] [Microsoft][ODBC SQL Server Driver]Function sequence error (0) (SQLFetch)')
Run Code Online (Sandbox Code Playgroud)
Gor*_*son 10
我能够重现您的问题,并且能够通过id在 INSERT 之后和提交之前立即检索值来避免它。也就是说,而不是
cursor.execute(string, "John Doe", 35)
cursor.commit()
id = cursor.fetchone()[0]
Run Code Online (Sandbox Code Playgroud)
我做了
cursor.execute(string, "John Doe", 35)
id = cursor.fetchone()[0] # although cursor.fetchval() would be preferred
cursor.commit()
Run Code Online (Sandbox Code Playgroud)
小智 7
对我来说,这仅适用于 Azure SQL Serverless(使用pyodbc==4.0.28):
cursor.execute(insert_statement, param_value_list)
cursor.execute("SELECT @@IDENTITY AS ID;")
return cursor.fetchone()[0]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7123 次 |
| 最近记录: |