Return 使用 SQLAlchemy 和 SQL 服务器插入的行的主键
Return primary key of inserted row using SQLAlchemy & SQL Server
我正在尝试插入一行并保留主键以供下游应用程序使用。我似乎无法在 SQLAlchemy 中检索值,但在我的数据库管理系统中似乎工作正常。
这是基本代码
sql = """
INSERT INTO [workflow_execution_status]([workflow], [requested_by], [requested_datetime], [experiment_id])
OUTPUT Inserted.execution_id
VALUES (?, ?, ?, ?)
"""
with engine.connect() as connection:
result = connection.execute(sql, ('test_workflow', 'test_user', datetime.datetime.now(), 0))
for row in result:
print(row)
但这是我收到的错误:
DBAPIError: (pyodbc.Error) ('HY010', '[HY010] [Microsoft][ODBC Driver 13 for SQL Server]Function sequence error (0) (SQLFetch)')
我猜我在使用 SQLAlchemy 时做错了什么 -- 希望有人能给我指出正确的方向。
AlwaysLearning 的解决方案是正确的。附加“SET NOCOUNT ON;”到查询的顶部,例如
sql = """
SET NOCOUNT ON;
INSERT INTO [workflow_execution_status]([workflow], [requested_by], [requested_datetime], [experiment_id])
OUTPUT Inserted.execution_id
VALUES (?, ?, ?, ?)"""
我正在尝试插入一行并保留主键以供下游应用程序使用。我似乎无法在 SQLAlchemy 中检索值,但在我的数据库管理系统中似乎工作正常。
这是基本代码
sql = """
INSERT INTO [workflow_execution_status]([workflow], [requested_by], [requested_datetime], [experiment_id])
OUTPUT Inserted.execution_id
VALUES (?, ?, ?, ?)
"""
with engine.connect() as connection:
result = connection.execute(sql, ('test_workflow', 'test_user', datetime.datetime.now(), 0))
for row in result:
print(row)
但这是我收到的错误:
DBAPIError: (pyodbc.Error) ('HY010', '[HY010] [Microsoft][ODBC Driver 13 for SQL Server]Function sequence error (0) (SQLFetch)')
我猜我在使用 SQLAlchemy 时做错了什么 -- 希望有人能给我指出正确的方向。
AlwaysLearning 的解决方案是正确的。附加“SET NOCOUNT ON;”到查询的顶部,例如
sql = """
SET NOCOUNT ON;
INSERT INTO [workflow_execution_status]([workflow], [requested_by], [requested_datetime], [experiment_id])
OUTPUT Inserted.execution_id
VALUES (?, ?, ?, ?)"""