Я привык к (испорченному?) Интерфейсу python SQLite для работы с базами данных SQL. Одна приятная функция в API Python SQLite - «диспетчер контекста», то есть оператор python with
. Обычно я выполняю запросы следующим образом:
import as sqlite
with sqlite.connect(db_filename) as conn:
query = "INSERT OR IGNORE INTO shapes VALUES (?,?);"
results = conn.execute(query, ("ID1","triangle"))
В приведенном выше коде, если мой запрос изменяет базу данных и я забываю запустить conn.commit ()
, диспетчер контекста запускает его автоматически при выходе с заявлением
. Он также прекрасно обрабатывает исключения: если исключение возникает до того, как я что-то фиксирую, база данных откатывается.
Сейчас я использую интерфейс MySQLdb
, который, похоже, не поддерживает аналогичный менеджер контекста из коробки. Как создать свой собственный? Здесь есть связанный вопрос , но он не предлагает полного решения.