Правильный способ использования sql commit

0

У меня есть код следующим образом:

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 ответ

1
Лучший ответ

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

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню