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