Context manager para MySQLdb @ de Pyth

Estoy acostumbrado (¿mimado por?) @ De Pyth SQLite interfaz para tratar con bases de datos SQL. Una buena característica en la API de SQLite de Python es el "administrador de contexto", es decir, el @ de Pythwith declaración. Normalmente ejecuto consultas de la siguiente manera:

import as sqlite

with sqlite.connect(db_filename) as conn:
    query = "INSERT OR IGNORE INTO shapes VALUES (?,?);"
    results = conn.execute(query, ("ID1","triangle"))

Con el código anterior, si mi consulta modifica la base de datos y me olvido de ejecutarconn.commit(), el administrador de contexto lo ejecuta automáticamente al salir dewith declaración. También maneja las excepciones muy bien: si se produce una excepción antes de confirmar algo, la base de datos se revierte.

Ahora estoy usando elMySQLdb interface, que no parece admitir un administrador de contexto similar listo para usar. ¿Cómo creo el mío? Hay una pregunta relacionadaaqu, pero no ofrece una solución completa.

Respuestas a la pregunta(2)

Su respuesta a la pregunta