Правильный способ использования sql commit - PullRequest
0 голосов
/ 20 сентября 2018

У меня есть следующий код:

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 голосов
/ 20 сентября 2018

Способ работы приведенного выше кода заключается в том, что поведение было бы точно таким же, если бы вы имели один вызов commit() выше вызова close().Поэтому, чтобы сделать код более читабельным, было бы лучше сделать один вызов.Это также облегчило бы изменение кода, не забывая при этом вызов commit().

С точки зрения того, как должен быть написан код базы данных, обычно лучше совершать как можно позже - прямо перед закрытием, если это возможно,Это означает, что если что-то пойдет не так, вы можете легко откатить все данные.Исключения могут быть, если вы точно знаете, что хотите, чтобы какая-то часть обновления прошла, даже если последующая часть выйдет из строя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...