In diesem Artikel wird eine detaillierte SQLite-Datenbank und ihre Verwendung mit Python untersucht. Wir werden lernen, wie Sie SQLite -Datenbanken in der Pythons sqlite3
-Bibliothek manipulieren und schließlich einige der erweiterten Funktionen von sqlite3
untersuchen, um unsere Arbeit zu vereinfachen.
Hinweis: Bevor Sie beginnen, ist es am besten mit SQL vertraut. Wenn Sie damit nicht vertraut sind, können Sie sich einfach auf SQL Learning beziehen.
sqlite3
-Modul in Python liefert SQLite SQLite und ist mit Python vorinstalliert. Dadurch können Benutzer Datenbanken erstellen, eine Verbindung zu Datenbanken herstellen, Tabellen erstellen, Daten einfügen und SQL -Befehle ausführen. Das Modul unterstützt außerdem Platzhalter und ermöglicht den Parameterersatz in SQL -Befehlen und erleichtert das Einfügen von Variablen in Abfragen. sqlite3
aufrufen, um Änderungen zu speichern, die während der Transaktion vorgenommen wurden, und kann die Transaktion explizit verarbeiten, indem Sie commit()
auf isolation_level
bei der Verbindung mit der Datenbank einstellen. None
SQLite ist eine eingebettete Datenbankbibliothek in C -Sprache. Möglicherweise sind Sie mit anderen Datenbanktechnologien wie MySQL oder PostgreSQL vertraut. Diese Techniken verwenden die Client-Server-Methode: Die Datenbank wird als Server installiert und stellt dann mit dem Client eine Verbindung zum IT her. SQLite ist anders: Es wird als eingebettete Datenbank bezeichnet, da sie als Bibliothek im Programm enthalten ist. Alle Daten werden in einer Datei gespeichert - normalerweise mit .db -Erweiterung - und Sie können Funktionen verwenden, um SQL -Anweisungen auszuführen oder andere Aktionen in der Datenbank auszuführen.
Dateibasierte Speicherlösungen bieten auch einen gleichzeitigen Zugriff, was bedeutet, dass mehrere Prozesse oder Threads auf dieselbe Datenbank zugreifen können. Wofür ist SQLite? Ist es für eine Art von Anwendung geeignet?
sqlite funktioniert in den folgenden Situationen gut:
Was sind die Gründe, warum sie sich nicht für SQLite entscheiden?
Wie ich in der Einführung erwähnt habe, ist SQLite eine C -Bibliothek. Es gibt jedoch viele Sprachen, die Schnittstellen schreiben, einschließlich Python. Das sqlite3
-Modul bietet eine SQL -Schnittstelle und benötigt mindestens SQLite 3.7.15.
erstaunlicherweise ist sqlite3
mit Python erhältlich, sodass Sie nichts installieren müssen.
Es ist Zeit, Code zu schreiben! Im ersten Teil erstellen wir eine grundlegende Datenbank. Das erste, was zu tun ist, ist eine Datenbank zu erstellen und eine Verbindung dazu herzustellen:
import sqlite3 dbName = 'database.db' try: conn = sqlite3.connect(dbName) cursor = conn.cursor() print("Database created!") except Exception as e: print("Something bad happened: ", e) if conn: conn.close()
In Zeile 1 importieren wir die Bibliothek sqlite3
. Dann rufen wir in einem try/except
-Codeblock sqlite3.connect()
auf, um die Verbindung zur Datenbank zu initialisieren. Wenn alles gut läuft, ist conn
eine Instanz des Connection
-Objekts. Wenn try
fehlschlägt, drucken wir die empfangene Ausnahme und schließen die Verbindung zur Datenbank. Wie in der offiziellen Dokumentation angegeben, wird jede offene SQLite -Datenbank durch ein Connection
-Objekt dargestellt. Jedes Mal, wenn wir SQL -Befehle ausführen müssen, verfügt das Connection
-Objekt über eine Methode namens cursor()
. In der Datenbanktechnologie sind Cursors eine Kontrollstruktur, die das Durchqueren von Datensätzen in einer Datenbank ermöglicht.
Wenn wir diesen Code ausführen, sollten wir die folgende Ausgabe erhalten:
<code>> Database created!</code>
Wenn wir uns den Ordner ansehen, in dem sich das Python -Skript befindet, sollten wir eine neue Datei namens database.db
sehen. Diese Datei wird automatisch durch sqlite3
erstellt.
Zu diesem Zeitpunkt sind wir bereit, eine neue Tabelle zu erstellen, den ersten Eintrag hinzuzufügen und SQL -Befehle auszuführen, z. B. auswählen, aktualisieren oder fallen.
Um eine Tabelle zu erstellen, müssen wir nur eine einfache SQL -Anweisung ausführen. In diesem Beispiel erstellen wir eine students
Tabelle mit den folgenden Daten:
id | name | surname |
---|---|---|
1 | John | Smith |
2 | Lucy | Jacobs |
3 | Stephan | Taylor |
Nach der Zeile print("Database created!")
fügen Sie Folgendes hinzu:
import sqlite3 dbName = 'database.db' try: conn = sqlite3.connect(dbName) cursor = conn.cursor() print("Database created!") except Exception as e: print("Something bad happened: ", e) if conn: conn.close()
Wir erstellen eine Tabelle und rufen die cursor.execute()
-Methode auf, die verwendet wird, wenn wir eine einzelne SQL -Anweisung ausführen möchten.
Dann führen wir für jede Zeile, die wir hinzufügen möchten, eine Einfügungsoperation durch. Nach Abschluss aller Änderungen rufen wir conn.commit()
an, um die ausstehende Transaktion an die Datenbank zu senden. Wenn die commit()
-Methode nicht aufgerufen wird, gehen alle ausstehenden Änderungen an der Datenbank verloren. Schließlich schließen wir die Verbindung zur Datenbank, indem wir die Methode conn.close()
aufrufen.
Okay, jetzt lass uns unsere Datenbank abfragen! Wir brauchen eine Variable, um das Ergebnis der Abfrage zu halten. Sparen wir also das Ergebnis von cursor.execute()
in einer Variablen mit dem Namen records
:
<code>> Database created!</code>
Danach sehen wir alle Datensätze aus der Standardausgabe:
# 创建操作 create_query = '''CREATE TABLE IF NOT EXISTS student( id INTEGER PRIMARY KEY, name TEXT NOT NULL, surname TEXT NOT NULL); ''' cursor.execute(create_query) print("Table created!") # 插入和读取操作 cursor.execute("INSERT INTO student VALUES (1, 'John', 'Smith')") print("Insert #1 done!") cursor.execute("INSERT INTO student VALUES (2, 'Lucy', 'Jacobs')") print("Insert #2 done!") cursor.execute("INSERT INTO student VALUES (3, 'Stephan', 'Taylor')") print("Insert #3 done!") conn.commit() conn.close()
Zu diesem Zeitpunkt haben Sie möglicherweise festgestellt, dass wir in der cursor.execute()
-Methode die SQL -Befehle platziert haben, die ausgeführt werden müssen. Wenn wir einen anderen SQL -Befehl (z. B. Update oder Drop) ausführen möchten, ändert die Python -Syntax nichts.
cursor.execute()
-Methode erfordert eine Zeichenfolge als Argument. Im vorherigen Abschnitt haben wir gesehen, wie Daten in unsere Datenbank eingefügt werden, aber alles ist hartcodiert. Was ist, wenn wir den Inhalt in Variablen in der Datenbank speichern müssen? Zu diesem Zweck hat sqlite3
einige clevere Funktionen, die als Platzhalter bezeichnet werden. Mit den Platzhaltern können wir den Parameterersatz verwenden, wodurch das Einfügen von Variablen in Abfragen einfacher wird.
schauen wir uns dieses Beispiel an:
records = cursor.execute("SELECT * FROM student") for row in records: print(row)
Wir haben eine Methode namens insert_command()
erstellt. Diese Methode akzeptiert vier Parameter: Der erste Parameter ist eine Connection
-Stanz, und die anderen drei werden in unseren SQL -Befehlen verwendet.
in der Variablen command
?
repräsentiert einen Platzhalter. Dies bedeutet, dass, wenn Sie die student_id=1
, name='Jason'
und surname='Green'
aufrufen, die Anweisung Insert insert_command
wird. INSERT INTO student VALUES(1, 'Jason', 'Green')
nennen, übergeben wir unseren Befehl und alle Variablen, die durch Platzhalter ersetzt werden. Von nun an werden wir jedes Mal, wenn wir eine Zeile in die Tabelle execute()
einfügen müssen, die student
-Methode mit den erforderlichen Parametern auf. insert_command()
Der wichtigste Vorteil einer Transaktion besteht darin, die Datenintegrität sicherzustellen. In dem oben eingeführten Beispiel ist es möglicherweise nicht nützlich, aber die Transaktion wirkt sich aus, wenn wir mehr Daten verarbeiten, die in mehreren Tabellen gespeichert sind.
Pythons sqlite3
Modul startet eine Transaktion vor execute()
und executemany()
Ausführen, Aktualisieren, Löschen oder Ersetzen von Anweisungen. Dies bedeutet zwei Dinge:
commit()
zu rufen. Wenn wir commit()
aufrufen, ohne Connection.close()
auszuführen, gehen alle Änderungen, die wir während der Transaktion vornehmen, verloren. Lösung? Prozesstransaktionen explizit.
wie? Durch die Verwendung von Funktionsaufrufen sqlite3.connect(dbName, isolation_level=None)
anstelle von sqlite3.connect(dbName)
. Indem wir isolation_level
auf None
festlegen, zwingen wir sqlite3
, die Transaktion niemals implizit zu öffnen.
Der folgende Code ist ein Umschreiben des vorherigen Codes, verwendet jedoch explizit die Transaktion:
import sqlite3 dbName = 'database.db' try: conn = sqlite3.connect(dbName) cursor = conn.cursor() print("Database created!") except Exception as e: print("Something bad happened: ", e) if conn: conn.close()
Ich hoffe, Sie haben ein gutes Verständnis dafür, was SQLite ist, wie Sie es für Ihr Python -Projekt verwenden und wie einige seiner erweiterten Funktionen funktionieren. Die expliziten Verwaltung von Transaktionen kann zunächst etwas schwierig sein, aber es kann Ihnen sicherlich helfen, das Beste daraus zu machen. sqlite3
Wie stellt ich eine Verbindung zur SQLite -Datenbank in Python her? Sie können das
-Modul (vorinstalliert mit Python) verwenden, um eine Verbindung zur SQLite -Datenbank herzustellen. Verwenden Sie die Methode sqlite3
, um eine Verbindung herzustellen und das Verbindungsobjekt abzurufen, und erstellen Sie dann einen Cursor, um den SQL -Befehl auszuführen. connect()
-Methode im Cursorobjekt ausführen. Verwenden Sie zum Erstellen einer Tabelle die Anweisung execute()
. CREATE TABLE
, um Daten in die Tabelle einzufügen. Platzhalter INSERT INTO
oder %s
können für parametrisierte Abfragen verwendet werden, um eine SQL -Injektion zu vermeiden. ?
und commit()
im Verbindungsobjekt verwaltet. Setzen Sie mehrere SQL -Befehle zwischen rollback()
und begin
ein, um sicherzustellen, dass sie als einzelne Transaktion behandelt werden. commit
Das obige ist der detaillierte Inhalt vonEine Einführung in SQLite mit Python. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!