【问题标题】:How to run multiple queries in sqlalchemy as atomic operation?如何在 sqlalchemy 中作为原子操作运行多个查询?
【发布时间】:2021-07-11 02:13:40
【问题描述】:

我当前的解决方案涉及每次我想运行多个查询时在 sqlalchemy 上使用 execute() 方法。 例如。

connection.connect().execute("query1")
connection.connect().execute("query2")
connection.connect().execute("query3")

这将一个一个地执行查询,但是有可能“query2”执行失败但“query1”会运行。 如果任何中间查询失败,如何恢复到原始状态。就像如果“query1”和“query2”运行但“query3”失败,那么我如何让它回滚到原始状态

【问题讨论】:

标签: python mysql sql sqlalchemy


【解决方案1】:

如 cmets 中所述,可以通过将查询放入事务中来实现所需的行为。

阅读What is a database transaction? 了解更多信息。以下是该问题中投票最多的答案的引用,可帮助您入门:

事务是您希望将其视为“一个整体”的工作单元。它必须要么完全发生,要么根本不发生。

有关如何实现此功能的详细信息,请参阅Using Transactions。您的代码应如下所示:

# starts a transaction
with engine.begin() as connection:
    connection.execute("query1")
    connection.execute("query2")
    connection.execute("query3")

【讨论】:

    猜你喜欢
    • 2021-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-12
    • 2020-05-30
    • 2016-12-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多