使用SQL提交的正确方法

时间:2018-09-20 08:13:50

标签: mysql sql postgresql

我的代码如下:

try:
    conn = db_connection()
    cur = conn.cursor()

    if is_address_changed(vehicle, conn, cur):
        update_vehicle_address(vehicle, conn, cur)
        conn.commit()

    if is_price_changed(vehicle, conn, cur):
        update_vehicle(vehicle, conn, cur)
        insert_vehicle_price(vehicle, conn, cur)
        conn.commit()

    conn.close()
except Exception as e:
    capture_error(str(e))

因此,在我的代码中,两个conn.commit()中都有if statements

这是正确的方法吗?或者我只能在conn.close()

上添加一个

在另一种情况下会发生什么?

1 个答案:

答案 0 :(得分:1)

上面的代码的工作方式是,如果您对commit()的调用比对close()的调用多,则行为将完全相同。因此,为了使代码更具可读性,最好只有一个调用。这也将使修改代码变得更加容易,而又不会忘记对commit()的调用。

就应如何编写数据库代码而言,通常最好尽早提交-如果可能,在紧接提交之前。这意味着如果出现问题,您可以轻松回滚所有数据。如果您明确知道要更新的某些部分进行,即使后来的部分失败,也将是例外。