使用 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 13for SQL Server]函数序列错误(0((SQLFetch('(

我猜我在SQLAlchemy上做了一些错误的事情——希望有人能给我指明正确的方向。

AlwaysLearning的解决方案是正确的。追加"设置NOCOUNT"到查询的顶部,例如

sql = """
SET NOCOUNT ON;
INSERT INTO [workflow_execution_status]([workflow], [requested_by], [requested_datetime], [experiment_id])
OUTPUT Inserted.execution_id 
VALUES (?, ?, ?, ?)"""