熊猫df.to_sql()是否回滚?

时间:2020-08-09 13:13:19

标签: python-3.x pandas sqlalchemy

我正在使用熊猫通过SQLalchemy将数据写入SQL数据库。

我正在将数据加载到DataFrame,然后使用to_sql()方法。

熊猫to_sql()方法是否回滚? 例如,如果在将数据插入数据库期间发生错误,我可以将其回滚到原始状态吗?

2 个答案:

答案 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全部。