Utilisez Cursur qui se ferme automatiquement avec sqlite3 en Python

Qu'est-ce que c'est

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.

la mise en oeuvre

import sqlite3
class AutoCloseCursur(sqlite3.Cursor):
    def __init__(self, connection):
        super().__init__(connection)

    def __enter__(self):
        return self

    def __exit__(self, *args):
        self.close()

Comment ça va changer

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

  1. Difficile à lire
  2. Vous devez fermer explicitement le cur
  3. À partir de 2., le fichier reste ouvert lorsqu'une exception se produit

Vous pouvez résoudre les trois en utilisant votre propre classe comme indiqué ci-dessus.

Exemple d'utilisation

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

Utilisez Cursur qui se ferme automatiquement avec sqlite3 en Python
Comment utiliser SQLite en Python
Utiliser rospy avec virtualenv dans Python3
Utiliser Python mis en pyenv avec NeoVim
Utiliser OpenCV avec Python 3 dans Window
Sqlite en Python
Utilisez diverses fonctionnalités de rabbimq avec python pika
Comment utiliser tkinter avec python dans pyenv
Utiliser Python dans un environnement Anaconda avec VS Code
Formules qui apparaissent dans Faire des mathématiques avec Python
Utilisez config.ini avec Python
[Python] Utiliser JSON avec Python
Utiliser des dates en Python
Utiliser Valgrind avec Python
Utiliser mecab avec Python 3
Utiliser DynamoDB avec Python
Utilisez Python 3.8 avec Anaconda
Utiliser python avec docker
Utiliser le profileur en Python
Exemple de code spécifique pour travailler avec SQLite3 en Python
Manipulation de chaînes avec python et pandas que j'utilise souvent
Utiliser l'API Trello avec python
Utiliser l'expression let en Python
Grattage au sélénium en Python
Utiliser le protocole de mesure avec Python
Exploitez LibreOffice avec Python
Grattage avec chromedriver en python
Utiliser la fonction de rappel en Python
Utiliser l'API Twitter avec Python
Utiliser le magasin de paramètres en Python
Débogage avec pdb en Python
Utiliser le cache HTTP en Python
Utiliser TUN / TAP avec Python
Utilisez sqlite3 avec NAO (Pepper)
Utilisez l'ODM de MongoDB avec Python
Gérer les sons en Python
Utilisez les load_extensions de sqlite avec Pyramid
Utiliser un dict clé de liste en Python
Grattage avec du sélénium en Python
Utiliser Random Forest avec Python
Grattage avec Tor en Python
Utilisez Spyder de Python IDE
Tweet avec image en Python
Combiné avec ordinal en Python
[Python] [SQLite3] Exploiter SQLite avec Python (basique)
Utiliser l'API subsonique avec python3
Créons un script qui s'enregistre avec Ideone.com en Python.
Utilisez une macro qui s'exécute lors de l'enregistrement de python avec vscode
Générez automatiquement une table de distribution de fréquence en un seul coup avec Python
Comment se connecter à AtCoder avec Python et soumettre automatiquement
Reconnaissance des nombres dans les images avec Python
Utiliser la caméra Point Grey avec Python (PyCapture2)
Tester avec des nombres aléatoires en Python
Utilisez vl53l0x avec RaspberryPi (python)
Je souhaite utiliser un caractère générique que je souhaite décortiquer avec Python remove
GOTO en Python avec Sublime Text 3
Travailler avec LibreOffice en Python: import
Utilisez le tissu tel quel en python (fabric3)
Analyse CSS avec cssutils en Python