【发布时间】:2021-12-19 04:23:56
【问题描述】:
当我使用 sqlalchemy 插入多行时,我没有得到插入的 id 值。
例如,当我在 MS SQL Server 中执行普通 SQL 时,它会在结果集中显示 2 行(我插入的记录...1,2)。
INSERT INTO dbo.emp (id, fname, lname, dob)
OUTPUT inserted.id
VALUES (1, 'Test1','Rec1','01/01/1990'), (2, 'Test2','Rec2','01/01/1990')
当我使用下面的代码在 sqlalchemy 中执行相同的查询时,打印语句只显示值 2(不是 1)。看起来结果集已插入最后一行。下面的代码有什么问题吗?
try:
sql = """\
INSERT INTO dbo.emp (id, fname, lname, dob)
OUTPUT inserted.id
VALUES (:id, :fname, :lname, :dob)
"""
stmt = text(sql)
data = [
{'id': 1, 'fname':'Test1', 'lname':'rec1', 'dob':'05/05/2000'}
,{'id': 2, 'fname': 'Test2', 'lname': 'rec2', 'dob': '05/05/2001'}
]
result = conn.execute(stmt, data)
for id in result:
print(id)
conn.commit()
except exc.IntegrityError as e:
print('Code3 - Integrity error raised', e)
conn.rollback()
except exc.SQLAlchemyError as e:
print('Code3 - Something else went wrong', e)
conn.rollback()
【问题讨论】:
标签: python sql-server sqlalchemy pyodbc