English English

SQLite in Python - Das Erstellen von und Zugreifen auf Datenbankdaten in Ihrer Python-Anwendung

Dies ist eine Einführung in SQLite in Python. Sie werden lernen, wie Sie eine Datenbank in Ihrer Python-Anwendung erstellen. Aber auch, wie Sie auf Ihre Datenbankdaten zugreifen und diese bearbeiten können.

Sie müssen das Python-Modul "sqlite3" importieren. (Befehl "sqlite3 importieren").
Alle SQLite-Operationen werden über das Python-Modul "sqlite3" durchgeführt, das sich mit der SQLite-DB verbindet und sich an die Python-DB-API hält.

 

Erstellung der Datenbank

Eine Verbindung zur Datenbank wird durch die Methode "connect" hergestellt, die ein SQLite-Verbindungsobjekt zurückgibt. Dieses SQLite-Verbindungsobjekt wird verwendet, um auf den "Cursor" zuzugreifen und die Änderungen an der Datenbank zu übernehmen.
Mit dem "cursor" werden über die Funktion "execute" SQLite-Abfragen ausgeführt, mit denen auf die Datenbankdaten zugegriffen werden kann. Die Methode execute() gibt auch Datenbankzeilen zurück, wenn sie zur Abfrage von Daten aus der Datenbank verwendet wird.
Auf diese Datenbanksätze (Zeilen) kann mit den Methoden fetchall(), fetchone() und fetchmany() zugegriffen werden.

import sqlite3

try:
    sqliteCon = sqlite3.connect('Datebase_python.db')
    query_create_table = 	'''CREATE TABLE mytable (
                                id INTEGER PRIMARY KEY,
                                prename TEXT NOT NULL,
				surname TEXT NOT NULL,
                                countrycode INTEGER NOT NULL UNIQUE,
                                birthday datetime,
                                expenses REAL NOT NULL);'''

    cursor = sqliteCon.cursor()
    print("Connected to the database")
    cursor.execute(query_create_table)
    sqliteCon.commit()
    print("Database created")
    cursor.close()

except sqlite3.Error as error:
    print("Error while creating the table - ", error)
	
finally:
    if (sqliteCon):
        sqliteCon.close()
        print("database connection is closed")

Die Methode commit() muss auf dem SQLite-Verbindungsobjekt aufgerufen werden, um die Änderungen auf die Datenbank anzuwenden (zu persistieren).
Wenn Sie mit dem Zugriff auf Ihre Datenbank fertig sind, dann vergessen Sie nicht, den Cursor und die SQLite-Verbindung durch die Methode close() zu schließen.

Wichtige SQLite-Datenbanktypen

Diese Datenbanktypen (und ihre Python-Äquivalente) werden verwendet, um Werte in Ihren SQLite-Datenbanken zu speichern:

  • NULL: – Python: none - Ein Nullwert.
  • INTEGER: – Python: int - Numerische Werte. z.B.: 1,2,3,4
  • REAL: – Python: float - Ein Fließkommawert z.B.: 2.94
  • TEXT: – Python: str - Textstring, der UTF-8, UTF-16BE oder UTF-16LE Kodierung verwendet
  • BLOB: – Python: bytes - Ein Blob von Daten (binäre Daten), das zum Speichern von Bildern und Dateien verwendet wird

Informationen über die verfügbaren Fehlerklassen in SQLite

In diesem Beispiel wurde die Klasse "Error" verwendet, die alle Arten von aufgetretenen Fehlern in Bezug auf SQLite, Ihre Datenbank und die Datenbankverbindung zurückgibt.
Die Klasse "Error" ist eine Unterklasse von "Exception" und auch die Basisklasse für andere Fehlertypen und Fehlerklassen.
Andere Fehlerklassen:

sqlite3.DatabaseError
Dies ist eine Basisklasse für Fehler, die mit der Datenbank zusammenhängen. Ein Beispiel für einen Fehler: Sie haben keine Datenbankdatei definiert.

Diese Klasse "DatabaseError" hat die folgenden wichtigen Unterklassen:

  • sqlite3.IntegrityError
    Fehler bezüglich der Integrität der Datenbank. Zum Beispiel: eine Fremdschlüsselüberprüfung schlägt fehl.
  • sqlite3.ProgrammingError
    Fehler, die aufgrund von Programmierfehlern in Ihrer SQL-Abfrage auftreten. Zum Beispiel: Die Tabelle, die Sie anlegen wollen, existiert bereits.
  • sqlite3.OperationalError
    Fehler in Bezug auf den Betrieb und die Verbindung der Datenbank. Zum Beispiel: Der Datenbankserver ist ausgefallen oder die Verbindung wurde versehentlich getrennt..

 

Zugriff (Query) auf Daten aus der Datenbank

Sie können Daten aus Ihrer SQLite-Datenbank mit der Methode execute() abfragen, die einen SQL-Befehl als Argument erhält. Hier verwenden wir den SQL-Befehl "SELECT * FROM".

sqliteCon = sqlite3.connect('Datebase_python.db')
cursor = sqliteCon.cursor()
query_select_all = "SELECT * FROM mytable"
cursor.execute(query_select_all)
tablerows = cursor.fetchall()
print("Number of all rows: ", len(tablerows))
print("All rows in the table mytable: ")

for row in tablerows:
print("Id: ", row[0])
print("Prename: ", row[1]) 
print("Surname: ", row[2])
print("Country Code: ", row[3])
print("Birthday: ", row[4])
print("Expenses: ", row[4])
print("------\n")

cursor.close()
sqliteCon.close()

Die Methode fetchall() gibt die Datenbankzeilen der Datenbankabfrage (Variable "query_select_all") zurück.

 

Daten in die Datenbank einfügen (insert)

Fügen Sie mit dem SQL-Befehl "INSERT INTO" eine neue Zeile in Ihre Tabelle ein.

sqliteCon = sqlite3.connect('Datebase_python.db')
cursor = sqliteCon.cursor()

query_insert_into =    """INSERT INTO mytable
                          (id, prename, surname, countrycode, birthday, expenses) 
                           VALUES 
                          (1,'Max','Johnson','43','12-12-1990',5045.20)"""

count = cursor.execute(query_insert_into)
sqliteCon.commit()
cursor.close()

Die Methode execute() führt den SQL-Befehl aus und gibt die Anzahl der eingefügten Zeilen zurück.
Die Anzahl der eingefügten (eingefügten, gelöschten oder geänderten) Zeilen kann durch die Methode "rowcount" ermittelt werden:

cursor.rowcount

 

 

Daten aus der Datenbank löschen (delete)

Dies geschieht ähnlich wie im Kapitel ("Daten in die Datenbank einfügen") oben.
Sie können auch Argumente (Parameter) übergeben, über die Methode execute(). Diese Parameter speichern Ihre Werte für das SQL-Kommando. Die Tabellenspalte und der Wert (im SQL-Kommando durch das Fragezeichen "?" gekennzeichnet) wird in der Methode execute() in eigenen Klammern hinzugefügt.

 

sqliteCon = sqlite3.connect('Datebase_python.db')
cursor = sqliteCon.cursor()

query_delete_row = "DELETE FROM mytable WHERE id = ?"
cursor.execute(query_delete_row, (id, 5))
sqliteCon.commit()

cursor.close()
sqliteCon.close()

 

Wenn Sie eine Zeile aktualisieren wollen, dann verwenden Sie stattdessen den SQL-Befehl "UPDATE". Beispiel (ein Auszug):

query_update_row = "UPDATE mytable SET name=:namevalue WHERE id = :idnumber"
cursor.execute(query_update_row, {"Peter": namevalue, "5": idnumber})
sqliteCon.commit()

In diesem Beispiel werden die Parameter (Argumente) über die Platzhalter (namevalue und idnumber) übergeben.

 

Dies war eine Einführung in die Programmierung von SQLite-Datenbanken in Python. Wenn Sie mehr über dieses Thema erfahren möchten, dann schauen Sie bitte unter den folgenden Links nach.

 

Mehr über SQLite3 / Dokumentation von SQLite3:
https://docs.python.org/3/library/sqlite3.html

DB-Browser - GUI-Werkzeug zum Anzeigen und Verwalten der SQLite-Datenbank:
https://sqlitebrowser.org/dl/

 

Cookies erleichtern die Bereitstellung unserer Dienste. Mit der Nutzung unserer Dienste erklären Sie sich damit einverstanden, dass wir Cookies verwenden.
Ok