Sobes.tech
Back to questions
Junior — Middle
52

Каким образом вы реализуете управление транзакциями при работе с базой данных?

Answer from AI

sobes.tech AI

В Python управление транзакциями при работе с базой данных обычно реализуется с помощью контекстных менеджеров или явного управления методами commit и rollback.

Например, при использовании библиотеки sqlite3 можно сделать так:

import sqlite3

conn = sqlite3.connect('example.db')
try:
    with conn:
        conn.execute("INSERT INTO users (name) VALUES (?)", ('Alice',))
        # Если здесь возникнет исключение, транзакция откатится автоматически
except Exception as e:
    print(f"Ошибка: {e}")
finally:
    conn.close()

Контекстный менеджер with conn: автоматически вызывает commit() при успешном завершении блока и rollback() при исключении.

Если контекстный менеджер не используется, то можно явно вызывать:

conn = sqlite3.connect('example.db')
cursor = conn.cursor()
try:
    cursor.execute("INSERT INTO users (name) VALUES (?)", ('Bob',))
    conn.commit()
except Exception:
    conn.rollback()
finally:
    conn.close()

Таким образом, управление транзакциями обеспечивает целостность данных и позволяет откатывать изменения при ошибках.