【发布时间】:2020-10-30 13:21:06
【问题描述】:
使用以下函数:
import pyodbc
def execute_side_effect_stmt(sql_stmt: str, params: list):
with get_connection() as conn:
cursor = conn.cursor()
cursor.executemany(sql_stmt, params)
columns = [column[0] for column in cursor.description]
results = cursor.fetchall()
response = []
for row in results:
response.append(dict(zip(columns, row)))
conn.commit()
if not response:
return ''
return response
使用以下参数:
sql = """INSERT INTO dbo.events
(sha, duration)
OUTPUT Inserted.id, Inserted.sha
VALUES (?, ?)"""
params = [('123',1),('456', 2), ('789', 3)]
result = execute_side_effect_stmt(sql, params)
Result 只返回 params 中最后一个条目的 id 和 sha。一切都正确插入到数据库中。非常欢迎任何关于为什么只有最后一个插入给出输出的见解。
【问题讨论】:
标签: python database insert pyodbc