Verwenden Sie Cursur, das in Python automatisch mit sqlite3 geschlossen wird

Was ist das

Dies ist eine Methode zum Erstellen eines Cursur-Objekts, das mithilfe der with-Syntax in sqlite3 der Python-Standardbibliothek automatisch geschlossen wird.

Wenn Sie es normal verwenden, müssen Sie cur.close () schreiben, während Sie jedes Mal Ausnahmen behandeln, was sehr problematisch ist.

Sie können dies auch verwenden, um Code mit "psycopg2" zu teilen, das ein ähnliches API-Format hat.

Implementierung

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

    def __enter__(self):
        return self

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

Wie es sich ändern wird

Wenn Sie es ohne eine solche Implementierung schreiben, sieht der Code folgendermaßen aus:

with sqlite3.connect(DATABASE) as conn:
    cur = conn.cursur()
    cur.execute(SQL_QUERY)
    cur.close()
    conn.commit()

Dies hat die folgenden Probleme

  1. Schwer zu lesen
  2. Sie müssen den Cur explizit schließen
  3. Ab 2. bleibt die Datei geöffnet, wenn eine Ausnahme auftritt

Sie können alle drei lösen, indem Sie Ihre eigene Klasse wie oben gezeigt verwenden.

Anwendungsbeispiel

with sqlite3.connect(DATABASE) as conn:
    with AutoCloseCursur(conn)
        cur.execute(SQL_QUERY)
    conn.commit()

Wenn Sie es gut kombinieren, können Sie PostgreSQL und SQLite DB mit demselben Code verarbeiten.

Recommended Posts

Verwenden Sie Cursur, das in Python automatisch mit sqlite3 geschlossen wird
Verwendung von SQLite in Python
Verwenden Sie rospy mit virtualenv in Python3
Verwenden Sie Python in pyenv mit NeoVim
Verwenden Sie OpenCV mit Python 3 in Window
SQLite in Python
Verwenden Sie verschiedene Rabbimq-Funktionen mit Python Pika
Wie man tkinter mit Python in Pyenv benutzt
Verwenden Sie Python in einer Anaconda-Umgebung mit VS-Code
Formeln, die unter Mathematik mit Python ausführen angezeigt werden
Verwenden Sie config.ini mit Python
[Python] Verwenden Sie JSON mit Python
Verwenden Sie Datumsangaben in Python
Verwenden Sie Valgrind mit Python
Verwenden Sie Mecab mit Python 3
Verwenden Sie DynamoDB mit Python
Verwenden Sie Python 3.8 mit Anaconda
Verwenden Sie Python mit Docker
Verwenden Sie den Profiler in Python
Spezifischer Beispielcode für die Arbeit mit SQLite3 in Python
String-Manipulation mit Python & Pandas, die ich oft benutze
Verwenden Sie die Trello-API mit Python
Verwenden Sie den let-Ausdruck in Python
Schaben mit Selen in Python
Verwenden Sie das Messprotokoll mit Python
Betreiben Sie LibreOffice mit Python
Schaben mit Chromedriver in Python
Verwenden Sie die Rückruffunktion in Python
Verwenden Sie die Twitter-API mit Python
Verwenden Sie den Parameterspeicher in Python
Debuggen mit pdb in Python
Verwenden Sie den HTTP-Cache in Python
Verwenden Sie TUN / TAP mit Python
Verwenden Sie sqlite3 mit NAO (Pepper)
Umgang mit Sounds in Python
Verwenden Sie die load_extensions von sqlite mit Pyramid
Verwenden Sie in Python ein Diktat mit Listenschlüssel
Scraping mit Selen in Python
Verwenden Sie Random Forest mit Python
Scraping mit Tor in Python
Verwenden Sie Spyder von Python IDE
Tweet mit Bild in Python
Kombiniert mit Ordnungszahl in Python
[Python] [SQLite3] Betreiben Sie SQLite mit Python (Basic)
Verwenden Sie die Unterschall-API mit Python3
Erstellen wir ein Skript, das sich bei Ideone.com in Python registriert.
Verwenden Sie ein Makro, das beim Speichern von Python mit vscode ausgeführt wird
Generieren Sie mit Python automatisch eine Häufigkeitsverteilungstabelle auf einmal
So melden Sie sich mit Python bei AtCoder an und senden automatisch
Zahlenerkennung in Bildern mit Python
Verwenden Sie eine Point Grey-Kamera mit Python (PyCapture2).
Testen mit Zufallszahlen in Python
Verwenden Sie vl53l0x mit RaspberryPi (Python)
Ich möchte einen Platzhalter verwenden, den ich mit Python entfernen möchte
GOTO in Python mit erhabenem Text 3
Arbeiten mit LibreOffice in Python: Importieren
Verwenden Sie Stoff wie in Python (Stoff3)
CSS-Analyse mit cssutils in Python