Контекстный менеджер MySQLdb Python

Я привык к (испорченному?) Интерфейсу 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 , который, похоже, не поддерживает аналогичный менеджер контекста из коробки. Как создать свой собственный? Здесь есть связанный вопрос , но он не предлагает полного решения.

14
задан Community 23 May 2017 в 11:47
поделиться