Il s'agit d'une méthode pour créer un objet Cursur qui se ferme automatiquement à l'aide de la syntaxe with dans sqlite3 de la bibliothèque standard Python.
Si vous l'utilisez normalement, vous devez écrire cur.close () tout en gérant les exceptions à chaque fois, ce qui est très gênant.
Vous pouvez également l'utiliser pour partager du code avec psycopg2, qui a un format d'API similaire.
import sqlite3
class AutoCloseCursur(sqlite3.Cursor):
    def __init__(self, connection):
        super().__init__(connection)
    def __enter__(self):
        return self
    def __exit__(self, *args):
        self.close()
Si vous l'écrivez sans une telle implémentation, le code ressemblera à ceci:
with sqlite3.connect(DATABASE) as conn:
    cur = conn.cursur()
    cur.execute(SQL_QUERY)
    cur.close()
    conn.commit()
Cela pose les problèmes suivants
Vous pouvez résoudre les trois en utilisant votre propre classe comme indiqué ci-dessus.
with sqlite3.connect(DATABASE) as conn:
    with AutoCloseCursur(conn)
        cur.execute(SQL_QUERY)
    conn.commit()
Avec une bonne combinaison, vous pourrez gérer les bases de données PostgreSQL et SQLite avec le même code.
Recommended Posts