我正在使用熊猫通过SQLalchemy将数据写入SQL数据库。
我正在将数据加载到DataFrame,然后使用to_sql()方法。
熊猫to_sql()方法是否回滚? 例如,如果在将数据插入数据库期间发生错误,我可以将其回滚到原始状态吗?
答案 0 :(得分:2)
使用上下文管理器,如果发生错误,将自动处理回滚:
with engine.begin() as conn:
df1.to_sql(con=conn, ...)
df2.to_sql(con=conn, ...)
有关更多信息,请阅读:to_sql rollback
答案 1 :(得分:0)
请注意,除了可接受的答案之外,您还可以针对所需的任何SQL使用相同的连接(conn
实例)
with engine.begin() as conn:
df1.to_sql(con=conn, ...)
conn.execute("INSERT INTO...")
df2.to_sql(con=conn, ...)
conn.execute("UPDATE FROM...")
conn.execute("DELETE FROM...")
如果with
块中有任何未捕获的异常,Pandas将ROLLBACK
进行所有操作。否则,熊猫会COMMIT
全部。