Welcome to Our Website

Python SQLite3 Tutorial (Datenbankprogrammierung)

In diesem Tutorial arbeiten wir programmgesteuert mit der SQLite3-Datenbank mit Python.

SQLite ist im Allgemeinen eine serverlose Datenbank, die Sie in fast allen Programmiersprachen einschließlich Python verwenden können. Serverlos bedeutet, dass Sie keinen separaten Server installieren müssen, um mit SQLite zu arbeiten, sodass Sie eine direkte Verbindung zur Datenbank herstellen können.

SQLite ist eine leichte Datenbank, die ein relationales Datenbankverwaltungssystem mit Null-Konfiguration zur Verfügung stellen kann, weil es keine Notwendigkeit, etwas zu konfigurieren oder einzurichten, es zu benutzen.,

Wir werden SQLite Version 3 oder SQLite3 verwenden, also fangen wir an.

Inhaltsverzeichnis

Verbindung erstellen

Um SQLite3 in Python zu verwenden, müssen Sie zunächst das Modul sqlite3 importieren und dann ein Verbindungsobjekt erstellen, das uns mit der Datenbank verbindet und uns die SQL-Anweisungen ausführen lässt.

Sie können ein Verbindungsobjekt mit der Funktion connect ():

import sqlite3con = sqlite3.connect('mydatabase.db')

, das eine neue Datei mit dem Namen ‘mydatabase.DB’.,

SQLite3 Cursor

ausführen SQLite-Anweisungen in Python, benötigen Sie ein cursor-Objekt. Sie können es mit der cursor () – Methode erstellen.

Der SQLite3-Cursor ist eine Methode des Verbindungsobjekts. Um die SQLite3-Anweisungen auszuführen, sollten Sie zuerst eine Verbindung herstellen und dann ein Objekt des Cursors mit dem Verbindungsobjekt wie folgt erstellen:

con = sqlite3.connect('mydatabase.db')cursorObj = con.cursor()

Jetzt können wir das Cursor-Objekt verwenden, um die execute () – Methode aufzurufen, um SQL-Abfragen auszuführen.,

Datenbank erstellen

Wenn Sie eine Verbindung mit SQLite erstellen, wird automatisch eine Datenbankdatei erstellt, wenn sie noch nicht vorhanden ist. Diese Datenbankdatei wird auf der Festplatte erstellt; Wir können auch eine Datenbank im RAM erstellen, indem wir Folgendes verwenden :Speicher: mit der Verbindungsfunktion. Diese Datenbank wird als in-memory-Datenbank.

Betrachten Sie den folgenden Code, in dem wir eine Datenbank mit einem Versuch erstellt haben, außer und schließlich Blöcke, um Ausnahmen zu behandeln:

Zuerst importieren wir das sqlite3 Modul, dann definieren wir eine Funktion sql_connection., Innerhalb dieser Funktion haben wir einen try-Block, in dem die Funktion connect () nach dem Herstellen der Verbindung ein Verbindungsobjekt zurückgibt.

Dann haben wir except block, der im Falle von Ausnahmen die Fehlermeldung ausgibt. Wenn keine Fehler auftreten, wird die Verbindung hergestellt und eine Meldung wie folgt angezeigt.

Danach haben wir unsere Verbindung im finally Block geschlossen. Das Schließen einer Verbindung ist optional, aber es ist eine gute Programmierpraxis, so dass Sie den Speicher von nicht verwendeten Ressourcen befreien.,

Tabelle erstellen

Um eine Tabelle in SQLite3 zu erstellen, können Sie die Abfrage Tabelle erstellen in der execute () – Methode verwenden. Führen Sie die folgenden Schritte aus:

  1. Erstellen Sie ein Verbindungsobjekt.
  2. Erstellen Sie aus dem Verbindungsobjekt ein Cursorobjekt.
  3. Rufen Sie mit dem Cursor-Objekt die execute-Methode mit create table query als Parameter auf.,

Lassen Sie uns Mitarbeiter mit den folgenden Attributen erstellen:

employees (id, name, salary, department, position, hireDate)

Der Code wird folgendermaßen aussehen:

Im obigen Code haben wir zwei Methoden definiert, die erste stellt eine Verbindung her und die zweite Methode erstellt ein Cursorobjekt, um die Anweisung create table auszuführen.

Die commit () – Methode speichert alle änderungen, die wir vornehmen. Am Ende werden beide Methoden aufgerufen.

Um zu überprüfen, ob unsere Tabelle erstellt wurde, können Sie den DB-Browser für SQLite verwenden, um Ihre Tabelle anzuzeigen. Öffnen Sie Ihre mydatabase.,db-Datei mit dem Programm, und Sie sollten Ihre Tabelle sehen:

Insert in Table

Um Daten in eine Tabelle einzufügen, verwenden wir die INSERT INTO Anweisung. Betrachten Sie die folgende Codezeile:

cursorObj.execute("INSERT INTO employees VALUES(1, 'John', 700, 'HR', 'Manager', '2017-01-04')")con.commit()

Um zu überprüfen, ob die Daten eingefügt werden, klicken Sie im DB-Browser auf Daten durchsuchen:

Wir können Werte/Argumente auch an eine INSERT Anweisung in der execute() Methode übergeben. Sie können das Fragezeichen verwenden (?) als Platzhalter für jeden Wert., Die Syntax der EINFÜGUNG wird wie folgt aussehen:

cursorObj.execute('''INSERT INTO employees(id, name, salary, department, position, hireDate) VALUES(?, ?, ?, ?, ?, ?)''', entities)

Wobei Entitäten die Werte für die Platzhalter wie folgt enthalten:

entities = (2, 'Andrew', 800, 'IT', 'Tech', '2018-02-06')

Der gesamte Code ist wie folgt:

Update Table

Um die Tabelle zu aktualisieren, erstellen Sie einfach eine Verbindung, erstellen Sie dann ein Cursor-Objekt mit der Verbindung und verwenden Sie schließlich die UPDATE-Anweisung in der execute () – Methode.

Angenommen, wir möchten den Namen des Mitarbeiters aktualisieren, dessen ID gleich 2 ist., Zum Aktualisieren verwenden wir die UPDATE-Anweisung und für den Mitarbeiter, dessen ID gleich 2 ist. Wir werden die WHERE-Klausel als Bedingung verwenden, um diesen Mitarbeiter auszuwählen.

Beachten Sie den folgenden Code:

Dadurch wird der Name von Andrew in Rogers wie folgt geändert:

Select statement

Mit der select-Anweisung können Sie Daten aus einer bestimmten Tabelle auswählen. Wenn Sie alle Spalten der Daten aus einer Tabelle auswählen möchten, können Sie das Sternchen (*) verwenden., Die Syntax dafür lautet wie folgt:

select * from table_name

In SQLite3 wird die SELECT-Anweisung in der execute-Methode des Cursor-Objekts ausgeführt., Wählen Sie beispielsweise alle Spalten der Tabelle der Mitarbeiter aus und führen Sie den folgenden Code aus:

cursorObj.execute('SELECT * FROM employees ')

Wenn Sie einige Spalten aus einer Tabelle auswählen möchten, geben Sie die Spalten wie folgt an:

select column1, column2 from tables_name

Zum Beispiel

cursorObj.execute('SELECT id, name FROM employees')

Die select-Anweisung wählt die erforderlichen Daten aus der Datenbanktabelle aus, und wenn wenn Sie die ausgewählten Daten abrufen möchten, wird die Methode fetchall() des Cursorobjekts verwendet. Wir werden dies im nächsten Abschnitt demonstrieren.,

Alle Daten abrufen

Um die Daten aus einer Datenbank abzurufen, führen wir die SELECT-Anweisung aus und verwenden dann die fetchall () – Methode des Cursor-Objekts, um die Werte in einer Variablen zu speichern. Danach werden wir die Variable durchlaufen und alle Werte drucken.

Der Code wird wie folgt aussehen:

Der obige Code druckt die Datensätze in unserer Datenbank wie folgt aus:

Sie können fetchall() auch wie folgt in einer Zeile verwenden:


Wenn Sie bestimmte Daten aus der Datenbank abrufen möchten, können Sie die WHERE-Klausel verwenden., Zum Beispiel möchten wir die IDs und Namen der Mitarbeiter abrufen, deren Gehalt größer als 800 ist. Füllen wir dazu unsere Tabelle mit mehr Zeilen und führen Sie dann unsere Abfrage aus.

Sie können die insert-Anweisung verwenden, um die Daten zu füllen, oder Sie können sie manuell in das DB-Browser-Programm eingeben.

Um die ID und die Namen derjenigen abzurufen, die ein Gehalt von mehr als 800 haben:

In der obigen SELECT-Anweisung haben wir anstelle des Sternchens ( * ) die Attribute id und name angegeben., Das Ergebnis ist wie folgt:

SQLite3 rowcount

Der SQLite3 rowcount wird verwendet, um die Anzahl der Zeilen zurückzugeben, die von der zuletzt ausgeführten SQL-Abfrage betroffen oder ausgewählt wurden.

Wenn wir rowcount mit der SELECT-Anweisung verwenden, wird -1 zurückgegeben, da unbekannt ist, wie viele Zeilen ausgewählt sind, bis sie alle abgerufen werden., Betrachten Sie das folgende Beispiel:

print(cursorObj.execute('SELECT * FROM employees').rowcount)

Um die Zeilenanzahl zu erhalten, müssen Sie daher alle Daten abrufen und dann die Länge des Ergebnisses abrufen:

rows = cursorObj.fetchall()print len (rows)

Wenn Sie die DELETE-Anweisung ohne Bedingung (eine where-Klausel) verwenden, werden alle Zeilen in die Tabelle, und es wird die Gesamtzahl der gelöschten Zeilen in rowcount zurück.

print(cursorObj.execute('DELETE FROM employees').rowcount)

Wenn keine Zeile gelöscht wird, wird null zurückgeben.,

List tables

Um alle Tabellen in einer SQLite3-Datenbank aufzulisten, sollten Sie die sqlite_master-Tabelle abfragen und dann fetchall() verwenden, um die Ergebnisse aus der SELECT-Anweisung abzurufen.

Der sqlite_master ist die Master-Tabelle in SQLite3, in der alle Tabellen gespeichert sind.

Dadurch werden alle Tabellen wie folgt aufgelistet:

Überprüfen Sie, ob eine Tabelle vorhanden ist oder nicht

Beim Erstellen einer Tabelle sollten wir sicherstellen, dass die Tabelle noch nicht vorhanden ist. Ebenso sollte beim Entfernen/ Löschen einer Tabelle die Tabelle vorhanden sein.,s“ mit der DROP TABLE-Anweisung wie folgt:

drop table if exists table_name

Zum Beispiel

cursorObj.execute('drop table if exists projects')

Wir können auch überprüfen, ob die Tabelle, auf die wir zugreifen möchten, vorhanden ist oder nicht, indem wir die folgende Abfrage ausführen:

cursorObj.execute('SELECT name from sqlite_master WHERE type = "table" AND name = "employees"')print(cursorObj.fetchall())

Wenn die Tabelle der Mitarbeiter vorhanden ist, gibt sie ihren Namen wie folgt zurück:

Wenn der von uns angegebene Tabellenname nicht vorhanden ist, wird ein leeres Array zurückgegeben:

Drop table

Sie können eine Tabelle mit der DROP-Anweisung löschen/löschen., Die Syntax der DROP-Anweisung lautet wie folgt:

drop table table_name

Um eine Tabelle zu löschen, sollte die Tabelle in der Datenbank vorhanden sein. Daher wird empfohlen, „if exists“ mit der drop-Anweisung wie folgt zu verwenden:

drop table if exists table_name

Zum Beispiel

SQLite3 Ausnahmen

Ausnahmen sind die Laufzeitfehler. In der Python-Programmierung sind alle Ausnahmen die Instanzen der Klasse, die von der BaseException abgeleitet sind.,

In SQLite3 haben wir die folgenden Python-Hauptausnahmen:

DatabaseError

Jeder Fehler in Bezug auf die Datenbank löst den DatabaseError aus.

IntegratyError

IntegratyError ist eine Unterklasse von DatabaseError und wird ausgelöst, wenn ein Problem mit der Datenintegrität vorliegt. Beispielsweise werden Fremddaten nicht in allen Tabellen aktualisiert, was zu einer Inkonsistenz der Daten führt.

ProgrammingError

Die Ausnahme ProgrammingError wird ausgelöst, wenn Syntaxfehler vorliegen oder die Tabelle nicht gefunden wird oder die Funktion mit der falschen Anzahl von Parametern/ Argumenten aufgerufen wird.,

OperationalError

Diese Ausnahme wird ausgelöst, wenn die Datenbankoperationen fehlgeschlagen sind, z. B. ungewöhnliche Trennung. Dies ist nicht die Schuld der Programmierer.

NotSupportedError

Wenn Sie einige Methoden verwenden, die nicht von der Datenbank definiert oder unterstützt werden, löst dies die NotSupportedError-Ausnahme aus.

SQLite3 Executemany (Bulk insert)

Mit der executemany-Anweisung können Sie mehrere Zeilen gleichzeitig einfügen.

Betrachten Sie den folgenden Code:

Hier haben wir eine Tabelle mit zwei Spalten erstellt, und „data“ hat vier Werte für jede Spalte., Wir übergeben die Variable zusammen mit der Abfrage an die executemany () – Methode.

Beachten Sie, dass wir den Platzhalter verwendet haben, um die Werte zu übergeben.

Der obige Code generiert das folgende Ergebnis:

Verbindung schließen

Sobald Sie mit Ihrer Datenbank fertig sind, sollten Sie die Verbindung schließen. Sie können die Verbindung mit der close () – Methode schließen.,

Um eine Verbindung zu schließen, verwenden Sie das Verbindungsobjekt und rufen Sie die close () – Methode wie folgt auf:

con = sqlite3.connect('mydatabase.db')#program statementscon.close()

SQLite3 datetime

In der Python SQLite3-Datenbank können wir Datum oder Uhrzeit einfach speichern, indem wir das Datatime-Modul importieren. Die folgenden Formate sind die gebräuchlichsten Formate, die Sie für datetime verwenden können:

YYYY-MM-DDYYYY-MM-DD HH:MMYYYY-MM-DD HH:MM:SSYYYY-MM-DD HH:MM:SS.SSSHH:MMHH:MM:SSHH:MM:SS.SSSnow

Berücksichtigen Sie den folgenden Code:

In diesem Code haben wir zuerst das Datetime-Modul importiert und eine Tabelle mit dem Namen Zuweisungen mit drei Spalten erstellt.

Der Datentyp der Dritten Spalte ist ein Datum., Um das Datum in die Spalte einzufügen, haben wir datetime verwendet.Datum. Ebenso können wir datetime verwenden.zeit, mit der Zeit umzugehen.

Der obige Code generiert die folgende Ausgabe:

Die große Flexibilität und Mobilität der SQLite3-Datenbank machen es zur ersten Wahl für jeden Entwickler, sie zu verwenden und mit jedem Produkt zu versenden, mit dem er arbeitet.

Sie können SQLite3-Datenbanken in Windows -, Linux -, Mac OS -, Android-und iOS-Projekten aufgrund ihrer hervorragenden Portabilität verwenden. Sie versenden also eine Datei mit Ihrem Projekt und das war ‚ s.

Ich hoffe, Sie finden das Tutorial nützlich., Komm immer wieder zurück.

Danke.

Ayesha Tariq ist ein full-stack software engineer, web developer und blockchain developer-Enthusiasten. Sie verfügt über umfangreiche Kenntnisse in C/C++, Java, Kotlin, Python und viele andere.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.