我的代码如下:
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()
在另一种情况下会发生什么?
答案 0 :(得分:1)
上面的代码的工作方式是,如果您对commit()
的调用比对close()
的调用多,则行为将完全相同。因此,为了使代码更具可读性,最好只有一个调用。这也将使修改代码变得更加容易,而又不会忘记对commit()
的调用。
就应如何编写数据库代码而言,通常最好尽早提交-如果可能,在紧接提交之前。这意味着如果出现问题,您可以轻松回滚所有数据。如果您明确知道要更新的某些部分进行,即使后来的部分失败,也将是例外。