SQLAlchemy在插件上的MSSQL中回滚

时间:2016-06-15 21:58:54

标签: python sqlalchemy

我试图通过直接使用SqlAlchemy引擎对MSSQL数据库进行多次插入。

table = metadata.tables['TestTable']
ins = table.insert()
with engine.begin() as conn:
    conn.execute(ins, data)

第一个插入不会有问题。第二个插入将尝试运行然后执行回滚,然后将失败,并显示以下错误:

sqlalchemy.exc.ProgrammingError: (pyodbc.ProgrammingError) ('25000', '[25000' [FreeTDS][SQL Server]The ROLLBACK TRANSACTION request has no corresponding BEGIN TRANSACTION. (3903)(SQLEndTran)')

我已经改变了队列池的行为以使用reset_on_return =“commit”,所以我不知道为什么会发生这种情况。关于如何允许多次插入的任何想法?

1 个答案:

答案 0 :(得分:1)

事实证明,当事务中出现错误时,SQLAlchemy仍然会回滚,无论你是否将reset_on_return设置为“commit”。我试图从pandas数据帧插入np.nan值,导致错误。