Heim > Backend-Entwicklung > Python-Tutorial > Eine Einführung in SQLite mit Python

Eine Einführung in SQLite mit Python

Joseph Gordon-Levitt
Freigeben: 2025-02-18 11:21:09
Original
488 Leute haben es durchsucht

An Introduction to SQLite with Python

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.

Kernpunkte

  • SQLite ist ein leichtes, dateibasiertes zugehöriges Datenbankverwaltungssystem, das aufgrund seiner Einfachheit und einfachen Konfiguration üblicherweise in Python-Anwendungen verwendet wird. Es unterstützt den gleichzeitigen Zugriff und ermöglicht es, dass mehrere Prozesse oder Threads auf dieselbe Datenbank zugreifen. Es fehlen jedoch Multi-User-Funktionen und wird nicht wie andere Datenbanktechnologien wie MySQL oder PostgreSQL als Prozess verwaltet.
  • Das
  • Das 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.
  • Transaktionen in SQLite sind eine Reihe von Datenbankvorgängen, die als Einheit behandelt werden, um die Datenintegrität zu gewährleisten. Das Python -Modul von Python startet eine Transaktion, bevor die Anweisungen einfügen, aktualisieren, löschen oder ersetzt werden. Der Benutzer muss die Methode 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
Was ist SQLite?

sqlites Motto lautet: "klein, schnell und zuverlässig. Wählen Sie zwei davon."

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:

  • Da es in den meisten mobilen Betriebssystemen wie Android und iOS enthalten ist, ist SQLite möglicherweise die perfekte Wahl, wenn Sie eine eigenständige, serverlose Datenspeicherlösung benötigen.
  • Im Vergleich zur Verwendung großer CSV -Dateien können Sie die Leistung von SQL nutzen und alle Ihre Daten in eine einzelne SQLite -Datenbank einfügen.
  • SQLite kann verwendet werden, um Konfigurationsdaten für Anwendungen zu speichern. Tatsächlich ist SQLite 35% schneller als dateibasierte Systeme wie Konfigurationsdateien.

Was sind die Gründe, warum sie sich nicht für SQLite entscheiden?

  • Im Gegensatz zu MySQL oder PostgreSQL fehlt SQLite Multi-User-Funktionen.
  • SQLite ist immer noch eine dateibasierte Datenbank, kein Dienst. Sie können es weder als Prozess verwalten, noch können Sie starten, stoppen oder die Ressourcennutzung verwalten.

Pythons SQLite -Schnittstelle

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.

SQLite3

verwenden

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()
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

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>
Nach dem Login kopieren
Nach dem Login kopieren

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.

Erstellen, Lesen und Ändern von Datensätzen

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()
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

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>
Nach dem Login kopieren
Nach dem Login kopieren

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()
Nach dem Login kopieren

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.

Platzhalter

Die

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)
Nach dem Login kopieren

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.

Jedes

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')

Wenn wir die Funktion

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()

Transaktionen

Ich werde schnell die Bedeutung davon überprüfen, auch wenn Sie nicht neu für die Transaktionsdefinition sind. Eine Transaktion ist eine Reihe von Operationen, die in einer Datenbank ausgeführt werden, und wird logischerweise als Einheit betrachtet.

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:

  • Wir müssen darauf achten, die Methode commit() zu rufen. Wenn wir commit() aufrufen, ohne Connection.close() auszuführen, gehen alle Änderungen, die wir während der Transaktion vornehmen, verloren.
  • Wir können keine Transaktionen mit Beginn im selben Prozess öffnen.

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()
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Schlussfolgerung

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

verwandte Lesungen:

    Beginnen Sie mit SQLite3: Basic -Befehle
  • Beginnen Sie mit Python -Unit -Tests unter Verwendung von Unittest und PyTest
  • Daten in iOS -Anwendungen verwalten mit SQLite
  • http python anfordern Anfängerhandbuch
  • SQL und NoSQL: Differenz
häufig gestellte Fragen zur Verwendung von SQLite und Python

Was ist SQLite und warum benutze ich es mit Python? SQLite ist ein leichtes, dateibasiertes zugehöriges Datenbankverwaltungssystem. Aufgrund seiner Einfachheit und minimalen Konfiguration wird es in eingebetteten Datenbankanwendungen häufig verwendet. Die Verwendung von SQLite mit Python bietet eine bequeme Möglichkeit, Datenbanken in Python -Anwendungen zu integrieren, ohne dass ein separater Datenbankserver erforderlich ist.

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()

Wie erstelle ich Tabellen in der SQLite -Datenbank mit Python? Sie können SQL -Befehle mit der

-Methode im Cursorobjekt ausführen. Verwenden Sie zum Erstellen einer Tabelle die Anweisung execute(). CREATE TABLE

Wie kann ich Daten mit Python in die SQLite -Tabelle einfügen? Verwenden Sie die Anweisung

, 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. ?

Wie kann man SQLite -Transaktionen in Python verwenden? Transaktionen in SQLite werden unter Verwendung der Methoden

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!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage