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()
Таким образом, управление транзакциями обеспечивает целостность данных и позволяет откатывать изменения при ошибках.