Der Zweck dieses Python SQLite tutorial soll zeigen, wie die Entwicklung von Python-Datenbank-Anwendungen mit der SQLite-Datenbank. Sie erfahren, wie Sie SQLite-Datenbankoperationen von Python aus ausführen.
Wie Sie alle wissen, ist SQLite eine C-Sprachbibliothek, die eine SQL-Datenbank-Engine implementiert, die relativ schnell, serverlos und in sich geschlossen und hochzuverlässig ist. SQLite ist die am häufigsten verwendete Datenbank-Engine in der Testumgebung (siehe SQLite-Startseite)., SQLite ist mit den meisten Computern, mobilen Geräten und Browsern integriert. Pythons offizielles sqlite3-Modul hilft uns, mit der SQLite-Datenbank zu arbeiten.
Python sqlite3 Modul hält sich an Python-Datenbank-API-Spezifikation v2. 0 (PEP 249). PEP 249 bietet eine SQL-Schnittstelle, die entwickelt wurde, um die Ähnlichkeit zwischen den Python-Modulen, die für den Zugriff auf Datenbanken verwendet werden, zu fördern und aufrechtzuerhalten.,
Dieses Tutorial konzentriert sich hauptsächlich auf – –
- Herstellen einer Verbindung zur SQLite-Datenbank von Python und Erstellen einer SQLite-Datenbank und Tabellen
- Als nächstes werden wir SQLite-Datentypen und die entsprechenden Python-Typen behandeln
- Als nächstes lernen wir, wie man SQLite CRUD-Operationen ausführt, dh,ich verwende digitale Daten in SQLite mit Python
- Als nächstes werden SQLite-Transaktionsbehandlungen, das Erstellen und Aufrufen von SQLite-Funktionen und Fehlerbehandlungstechniken zur Entwicklung robuster Python-Programme mit SQLite-Datenbank
- behandelt Es wird Ihnen auch mitteilen, wie Sie eine speicherinterne Datenbank erstellen und verwalten und SQLite-Werte in benutzerdefinierte Python-Typen konvertieren
- Nehmen Sie eine Sicherungskopie der SQLite-Datenbank aus Python
Lassen Sie jetzt jeden Abschnitt sehen.,
Python SQLite-Verbindung
In diesem Abschnitt erfahren Sie, wie Sie eine SQLite-Datenbank erstellen und über Python mit dem Modul sqlite3 eine Verbindung herstellen.
Um eine Verbindung zu SQLite herzustellen, müssen Sie den Datenbanknamen angeben, den Sie verbinden möchten. Wenn Sie den Datenbankdateinamen angeben, der bereits auf der Festplatte vorhanden ist, wird eine Verbindung hergestellt. Wenn Ihre angegebene SQLite-Datenbankdatei jedoch nicht vorhanden ist, erstellt SQLite eine neue Datenbank für Sie.,
Sie müssen die folgenden Schritte ausführen, um eine Verbindung zu SQLite herzustellen
- Verwenden Sie die
connect()
– Methode eines sqlite3-Moduls und übergeben Sie den Datenbanknamen als Argument. - Erstellen Sie ein Cursorobjekt mit dem Verbindungsobjekt, das von der connect-Methode zurückgegeben wird, um SQLite-Abfragen von Python auszuführen.
- Schließen Sie das Cursor-Objekt und das SQLite-Datenbankverbindungsobjekt, wenn die Arbeit abgeschlossen ist.
- Catch-Datenbank-Ausnahme, wenn keine, die auftreten können, während diese Verbindung Prozess.
Das folgende Python-Programm erstellt eine neue Datenbankdatei “ SQLite_Python.,db “ und druckt die SQLite-Versionsdetails.
Sie sollten die folgende Ausgabe erhalten, nachdem Sie eine Verbindung zu SQLite von Python hergestellt haben.
Database created and Successfully Connected to SQLiteSQLite Database Version is: The SQLite connection is closed
Verstehen Sie den SQLite-Verbindungscode im Detail
Importieren Sie sqlite3
- Diese Zeile importiert das sqlite3-Modul in unser Programm. Mit den Klassen und Methoden, die im sqlite3-Modul definiert sind, können wir mit der SQLite-Datenbank kommunizieren.
sqlite3.,connect ()
- Mit der
connect()
– Methode können wir eine Verbindung zur SQLite-Datenbank herstellen. Diese Methode gibt das SQLite-Verbindungsobjekt zurück. - Das Verbindungsobjekt ist nicht threadsicher. das sqlite3-Modul erlaubt keine gemeinsame Nutzung von Verbindungen zwischen Threads. Wenn Sie dies immer noch versuchen, erhalten Sie zur Laufzeit eine Ausnahme.
- Die Methode
connect()
akzeptiert verschiedene Argumente. In unserem Beispiel haben wir das Argument Datenbankname an connect übergeben.
cursor = sqliteConnection.,cursor ()
- Mit einem Verbindungsobjekt können wir ein Cursorobjekt erstellen, mit dem wir SQLite-Befehle/ – Abfragen über Python ausführen können.
- Wir können aus einem einzelnen Verbindungsobjekt so viele Cursor erstellen, wie wir möchten. Wie das Verbindungsobjekt ist auch dieses Cursorobjekt nicht threadsicher. das sqlite3-Modul erlaubt keine gemeinsame Nutzung von Cursors zwischen Threads. Wenn Sie dies immer noch versuchen, erhalten Sie zur Laufzeit eine Ausnahme.
Danach haben wir eine SQLite-Abfrage erstellt, um die Datenbankversion abzurufen.
cursor.,execute ()
- Mit der execute-Methode des Cursors können wir eine Datenbankoperation oder Abfrage von Python ausführen. Die
cursor.execute()
– Methode verwendet eine SQLite-Abfrage als Parameter und gibt das ResultSet zurück, dh nichts als eine Datenbankzeile. - Wir können das Abfrageergebnis mit Cursormethoden wie
- aus ResultSet abrufen In unserem Beispiel führen wir eine
SELECT version();
– Abfrage aus, um die SQLite-Version abzurufen.,
try-except-finally block: Wir haben unseren gesamten Code in den try-except-Block eingefügt, um die SQLite-Datenbankausnahmen und-fehler abzufangen, die während dieses Vorgangs auftreten können.
- Mit der
sqlite3.Error
– Klasse des sqlite3-Moduls können wir alle Datenbankfehler und Ausnahmen behandeln, die während der Arbeit mit SQLite auftreten können Python. - Mit diesem Ansatz können wir unsere Anwendung robust. Die
sqlite3.Error
Klasse hilft uns, den Fehler im Detail zu verstehen. Es gibt eine Fehlermeldung und einen Fehlercode zurück.
cursor.schließen() und Verbindung.,close ()
- Es ist immer ratsam, den Cursor und das Verbindungsobjekt zu schließen, sobald Ihre Arbeit abgeschlossen ist, um Datenbankprobleme zu vermeiden.
SQLite-Tabelle aus Python erstellen
In diesem Abschnitt erfahren Sie, wie Sie mit dem Modul sqlite3 eine Tabelle in der SQLite-Datenbank aus Python erstellen. Erstellen Sie eine Tabellenanweisung ist eine DDL-Abfrage, um zu sehen, wie sie von Python ausgeführt wird.
In diesem Beispiel erstellen wir eine Tabelle“ SqliteDb_developers „in der Tabelle“ SQLite_Python.db“ database.,
Schritte zum Erstellen einer Tabelle in SQLite aus Python: –
- Verbinden Sie sich mit SQLite mit einer
sqlite3.connect()
. Ich habe den SQLite-Verbindungscode am Anfang dieses Artikels erklärt. - Bereiten Sie eine Abfrage create table vor.
- Führen Sie die Abfrage mit einer
cursor.execute(query)
- aus Schließen Sie am Ende die SQLite-Datenbankverbindung und das Cursor-Objekt.,
Ausgabe:
Successfully Connected to SQLiteSQLite table created:the sqlite connection is closed
SQLite-Datentypen und die entsprechenden Python-Typen
Bevor Sie mit der Ausführung von SQLite-CRUD-Operationen von Python fortfahren Verstehen Sie zuerst den SQLite-Datentyp und ihre entsprechenden Python-Typen, die uns helfen, Daten aus der SQLite-Tabelle zu speichern und zu lesen.
Die SQLite-Datenbank-Engine verfügt über mehrere Speicherklassen zum Speichern von Werten. Jeder in einer SQLite-Datenbank gespeicherte Wert verfügt über eine der folgenden Speicherklassen oder Datentypen.,
SQLite Datentypen:
- NULL – – Der Wert ist ein Nullwert.
- INTEGER: – Um den numerischen Wert zu speichern. Die Ganzzahl gespeichert in 1, 2, 3, 4, 6, oder 8 bytes, abhängig von der Größenordnung der Zahl.
- REAL:-Der Wert ist ein Gleitkommawert, z. B. 3.14 Wert von PI
- TEXT: – Der Wert ist eine Textzeichenfolge, EIN Textwert, der mit der UTF-8 -, UTF-16BE-oder UTF-16LE-Codierung gespeichert wird.
- BLOB: – Der Wert ist ein Blob von Daten, dh Binärdaten. Es wird zum Speichern von Bildern und Dateien verwendet.
Die folgenden Python-Typen wurden problemlos in SQLite konvertiert., Wenn Sie also die SQLite-Tabelle ändern oder aus dieser lesen, indem Sie CRUD-Operationen ausführen, denken Sie an diese Tabelle.,
Python type | SQLite type |
None | NULL |
int | INTEGER |
float | REAL |
str | TEXT |
bytes | BLOB |
Perform SQLite CRUD Operations from Python
Most of the time, we need to manipulate the SQLite table’s data from Python. To perform these data manipulations, we can execute DML queries i.e., SQLite Einfügen, Aktualisieren, Löschen Operationen von Python.
Jetzt kennen wir die Tabelle und ihre Spaltendetails, also gehen wir zu den Crud-Operationen. Ich habe für jede Operation ein separates Tutorial erstellt, um es detailliert abzudecken. Lassen Sie jetzt jeden Abschnitt sehen.
- Daten aus Python in die SQLite-Tabelle einfügen – In diesem Abschnitt erfahren Sie, wie Sie den Befehl INSERT aus Python ausführen, um Datensätze in die SQLite-Tabelle einzufügen.
- Lesen Sie die Daten der SQLite-Tabelle aus Python – In diesem Artikel erfahren Sie, wie Sie die SQLite SELECT-Abfrage aus einer Python-Anwendung ausführen, um die Zeilen der Tabelle abzurufen., Außerdem werde ich Sie wissen lassen, wie Sie
fetchall()
,fetchmany()
undfetchone()
Methoden einer Cursorklasse verwenden, um begrenzte Zeilen aus der Tabelle abzurufen, um die Leistung zu verbessern. - Daten der SQLite-Tabelle von Python aktualisieren – In diesem Abschnitt erfahren Sie, wie Sie die Aktualisierungsabfrage von Python ausführen, um Datensätze der SQLite-Tabelle zu ändern.
- Daten aus der SQLite-Tabelle aus Python löschen – In diesem Abschnitt erfahren Sie, wie Sie die Löschabfrage aus Python ausführen, um Datensätze aus der SQLite-Tabelle zu entfernen.,
Führen Sie SQL-Dateien (Skripte) mit der Executescript-Funktion des Cursors aus
SQLite-Skripte sind für die meisten täglichen Aufgaben praktisch. SQLite-Skript ist eine Reihe von SQL-Befehlen als Datei gespeichert (in .sql-format).
Ein SQLite-Skript enthält eine oder mehrere SQL-Operationen, die Sie dann von Ihrer Befehlszeilenaufforderung ausführen, wann immer erforderlich.
Im Folgenden sind die wenigen gängigen Szenarien aufgeführt, in denen wir SQLite-Skripte
- verwenden können, um mehrere Datenbanken gleichzeitig zu sichern.
- Vergleichen Sie Zeilenzahlen in Tabellen aus zwei verschiedenen Datenbanken mit demselben Schema.,
- Behalten Sie alle SQL-Befehle zum ERSTELLEN von TABELLEN in einem Datenbankskript bei. So können Sie Datenbankschema auf jedem Server erstellen.
Sie können Ihr Skript über die SQLite-Befehlszeile mit dem ausführen .lesebefehl wie folgt:
sqlite> .read mySQLiteScript.sql
Für dieses Beispiel habe ich ein Beispiel-SQLite-Skript erstellt, das zwei Tabellen erstellt. Dies ist das Skript, das ich erstellt habe.
CREATE TABLE hardware ( id INTEGER PRIMARY KEY, name TEXT NOT NULL, price REAL NOT NULL);CREATE TABLE software ( id INTEGER PRIMARY KEY, name TEXT NOT NULL, price REAL NOT NULL);
Nun wollen wir sehen, wie ein SQLite-Skript aus Python auszuführen.
Ausgabe: SQLite-Tabellen, die durch Ausführen eines SQL-Skripts aus Python erstellt wurden.,
Successfully Connected to SQLiteSQLite script executed successfullysqlite connection is closed
Hinweis: Nach dem Herstellen einer Verbindung zu SQLite lesen wir den gesamten Inhalt einer auf der Festplatte gespeicherten SQLite-Skriptdatei und kopieren sie in eine Python-Zeichenfolgenvariable. Dann haben wir die cursor.executscript(script)
– Methode aufgerufen, um alle SQL-Anweisungen in einem Aufruf auszuführen.
Einfügen / Abrufen digitaler Daten in SQLite mit Python
- In diesem Abschnitt werde ich Sie wissen lassen, wie Sie digitale Informationen wie eine Datei, ein Bild, ein Video oder ein Lied als BLOB-Daten in die SQLite-Tabelle von Python einfügen oder speichern.,
- Erfahren Sie auch, wie wir eine Datei, ein Bild, ein Video, ein Lied oder digitale Daten, die in SQLite gespeichert sind, mit Python lesen können.
Lesen Sie unsere vollständige Anleitung zum Einfügen und Abrufen von Dateien und Bildern in Python SQLite BLOB.
Erstellen oder Neu definieren SQLite-Funktionen mit Python
Python sqlite3 Modul bietet uns die Möglichkeit, SQL-Funktionen aus Python heraus zu erstellen und neu zu definieren. Ich habe ein separates Tutorial erstellt, um es im Detail zu behandeln. Bitte beachten Sie, wie Sie SQL-Funktionen in Python erstellen und neu definieren.,
Lesen Sie unsere vollständige Anleitung zum Erstellen oder Neudefinieren von SQLite-Funktionen in Python.
Arbeiten mit SQLite-Datums-und Zeitstempeltypen in Python und umgekehrt
Manchmal müssen wir Datums-oder Datumszeitwerte aus einer SQLite-Tabelle einfügen oder lesen. Wenn Sie also mit Datums-oder Zeitstempelwerten arbeiten, lesen Sie bitte unser separates Tutorial zum Arbeiten mit SQLite-DateTime-Werten in Python.
SQLite Datenbank Ausnahmen
Ausnahme sqlite3.Warnung
- Eine Unterklasse von Exception. Und Sie können es ignorieren, wenn Sie möchten, dass es die Ausführung nicht stoppt.,
Ausnahme sqlite3.Fehler
- Die Basisklasse der anderen Ausnahmen im sqlite3-Modul. Es ist eine Unterklasse der Ausnahme.
Ausnahme sqlite3.DatabaseError
- Exception raised for errors in Zusammenhang mit der Datenbank.
Beispiele: Wenn Sie versuchen, eine Datei als sqlite3-Datenbank zu öffnen, die keine Datenbankdatei ist, erhalten Sie sqlite3.DatabaseError: Die Datei ist verschlüsselt oder ist keine Datenbank
Ausnahme sqlite3.IntegratyError
- Unterklasse eines DatabaseError., Sie erhalten diese Ausnahme, wenn die relationale Integrität der Datenbank beeinträchtigt wird, z. B. wenn eine Fremdschlüsselprüfung fehlschlägt.
Ausnahme sqlite3.ProgrammingError
- Es ist auch eine Unterklasse von DatabaseError. Diese Ausnahme ausgelöst, da der Fehler in der Programmierung, z.B., erstellen eine Tabelle mit dem gleichen, die bereits vorhanden ist, werden syntax-Fehler in der SQL-Abfragen.
Ausnahme sqlite3.OperationalError
- Es ist auch eine Unterklasse von DatabaseError. Dieser Fehler liegt nicht in unserer Kontrolle. Diese Ausnahme wird ausgelöst bei Fehlern im Zusammenhang mit der Datenbank Betrieb.,
- Beispiele: ein versehentliches Trennen, Server aus, ein Timeout auftritt, die Datenquelle Probleme. server nach unten
Ausnahme sqlite3.NotSupportedError
- Bei der Verwendung der Datenbank-API wird eine Ausnahme ausgelöst, die von der Datenbank nicht unterstützt wird.
- Beispiel: Aufruf der rollback () – Methode für eine Verbindung, die die Transaktion nicht unterstützt. Aufruf von commit nach dem erstellen der Tabelle den Befehl.,
Daher ist es immer ratsam, den gesamten Datenbankoperationscode in den try-Block zu schreiben, damit Sie Ausnahmen im Block abfangen und gegebenenfalls Korrekturmaßnahmen ergreifen können.
Versuchen wir beispielsweise, Daten in eine Tabelle einzufügen, die in der SQLite-Datenbank nicht vorhanden ist, und den vollständigen Ausnahmestapel auszudrucken.,
Ausgabe:
Ändern Sie das Zeitlimit für die SQLite-Verbindung, wenn Sie eine Verbindung innerhalb von Python herstellen
Dies kann das Szenario sein, in dem mehrere Verbindungen auf eine SQLite-Datenbank zugreifen und einer der Prozesse, die eine Datenänderungsoperation für die Datenbank ausführen, Um eine Datenänderungsverbindung durchzuführen, muss gesperrt werden, dh die SQLite-Datenbank ist gesperrt, bis diese Transaktion festgeschrieben ist. Der Timeout-Parameter, den wir beim Herstellen einer Verbindung zur Datenbank angeben, bestimmt, wie lange die Verbindung warten soll, bis die Sperre aufgehoben wird, bis eine Ausnahme ausgelöst wird.,
Der Standardwert für den Timeout-Parameter ist 5.0 (fünf Sekunden). Sie müssen es während der Verbindung nicht angeben, da es sich um einen Standardwert handelt. dh wenn Sie von Python aus eine Verbindung zu SQLite herstellen und innerhalb von 5 Sekunden keine Antwort erhalten haben, löst Ihr Programm eine Ausnahme aus. Wenn Sie jedoch mit einem Verbindungs-Timeout-Problem konfrontiert sind und es erhöhen möchten, können Sie dies mit einem Timeout-Argument einer sqlite3.connect
– Funktion tun.
Lassen Sie uns sehen, wie Sie den Timeout-Wert ändern, während Sie SQLite aus Python heraus verbinden.,
Ausgabe:
Connected to SQLiteTotal rows are: (2,)The Sqlite connection is closed
Identifizieren total verpasst, da die SQLite-Datenbank-Verbindung wurde geöffnet
Für audit-oder Statistik-Zwecke, wenn Sie wollen zu finden die zahlen der Datenbank-Zeilen, die geändert wurden, eingefügt oder gelöscht da die Datenbank-Verbindung geöffnet wurde, können Sie das connection.total_changes
Methode Python-sqlite3-Modul.
Die Methode connection.total_changes
gibt die Gesamtzahl der betroffenen Datenbankzeilen zurück. Sehen wir uns das Python-Beispiel an, um die gesamten Änderungen zu finden, die seit dem Öffnen der Datenbankverbindung vorgenommen wurden.,
Ausgabe:
Connected to SQLiteTotal Rows affected since the database connection was opened: 3sqlite connection is closed
Nehmen Sie eine Sicherung der SQLite-Datenbank aus Python
Python sqlite3 Modul bietet eine Funktion, um eine Sicherung der SQLite-Datenbank zu nehmen. Mit einerconnection.backup()
– Methode können Sie die Sicherung der SQLite-Datenbank durchführen.
connection.backup(target, *, pages=0, progress=None, name="main", sleep=0.250)
Diese Funktion erstellt eine Sicherungskopie der SQLite-Datenbank und eine Kopie wird in das Argumentziel geschrieben, das eine andere Verbindungsinstanz sein muss., Standardmäßig oder wenn Seiten entweder 0 oder eine negative Ganzzahl sind, wird die gesamte Datenbank in einem einzigen Schritt kopiert; Andernfalls führt die Methode eine Schleife aus, die jeweils bis zu Seiten kopiert.
Das Argument name gibt die Datenbank an, die Sie kopieren möchten. Das sleep-Argument definiert die Anzahl der Sekunden, die zwischen aufeinanderfolgenden Versuchen, die verbleibenden Seiten einer Datenbank zu sichern, in den Ruhezustand versetzt werden sollen. dieses Argument kann entweder als Ganzzahl oder als Gleitkommawert angegeben werden.
Sehen wir uns das Beispiel an, um eine vorhandene Datenbank in eine andere zu kopieren.,
Ausgabe:
Hinweis:
- Nach dem Herstellen einer Verbindung zu SQLite haben wir beide Datenbanken über zwei verschiedene Verbindungen geöffnet.
- Als nächstes haben wir eine
connection.backup()
– Methode mit einer ersten Verbindungsinstanz ausgeführt. Außerdem haben wir die Anzahl der Datenbankseiten angegeben, die in jeder Iteration kopiert werden sollen.
Python SQLite Übungsprojekt
Bitte lösen Sie unsere Python-Datenbankprogrammierübung, um die Datenbankprogrammierung in Python zu meistern.
Leave a Reply