SQLite - Python: Ein Anfängerleitfaden

Hallo da draußen, zukünftige Datenbank-Zauberer! Ich freue mich sehr, euer Guide auf dieser aufregenden Reise in die Welt von SQLite und Python zu sein. Als jemand, der seit Jahren Informatik unterrichtet, kann ich euch versichern, dass ihr am Ende dieses Tutorials Datenbanken wie ein Profi manipuliert. Also, tauchen wir ein!

SQLite - Python

Installation

Bevor wir unsere Abenteuerreise beginnen, müssen wir sicherstellen, dass wir die richtigen Werkzeuge haben. Die gute Nachricht ist, wenn ihr Python installiert habt (was ich annehme, dass ihr es tut), habt ihr bereits SQLite! Es kommt zusammen mit Python, sodass keine zusätzlichen Installationen erforderlich sind. Ist das nicht praktisch?

Python sqlite3 Modul APIs

Nun, lassen Sie uns über den Star unseres Shows sprechen: das sqlite3 Modul. Dieses Modul ist euer Ticket, um mit SQLite-Datenbanken in Python zu arbeiten. Es bietet eine Reihe von Funktionen und Methoden, die wir im Laufe dieses Tutorials verwenden werden.

Hier ist eine Tabelle der wichtigsten Methoden, die wir verwenden werden:

Methode Beschreibung
connect() Eine Verbindung zur Datenbank herstellen
cursor() Ein Cursor-Objekt erstellen, um SQL-Befehle auszuführen
execute() Ein einzelnes SQL-Kommando ausführen
executemany() Ein SQL-Kommando gegen alle Parameterfolgen ausführen
commit() Die aktuelle Transaktion bestätigen
rollback() Alle Änderungen an der Datenbank seit dem letzten Aufruf von commit() rückgängig machen
close() Die Datenbankverbindung schließen

Macht euch keine Sorgen, wenn das jetzt ein bisschen rätselhaft erscheint. Wir werden jede dieser Methoden im Detail erkunden, während wir vorankommen.

Verbindung zur Datenbank herstellen

Lassen Sie uns mit der Verbindung zu einer Datenbank beginnen. Es ist, als würde man an die Tür des Hauses deiner Daten klopfen!

import sqlite3

# Verbindung zur Datenbank herstellen (oder erstellen, falls sie nicht existiert)
conn = sqlite3.connect('my_first_db.db')

print("Datenbankverbindung erfolgreich hergestellt!")

# Vergiss nicht, die Verbindung zu schließen, wenn du fertig bist
conn.close()

In diesem Beispiel importieren wir das sqlite3 Modul und verwenden seine connect() Funktion, um eine Verbindung zu einer Datenbank namens 'my_first_db.db' herzustellen. Existiert diese Datenbank nicht, wird SQLite sie für uns erstellen. Wie gedacht!

Eine Tabelle erstellen

Nun, da wir verbunden sind, lassen Sie uns eine Tabelle erstellen. Denkt an eine Tabelle als ein Spreadsheet innerhalb deiner Datenbank.

import sqlite3

conn = sqlite3.connect('my_first_db.db')
cursor = conn.cursor()

# Eine Tabelle erstellen
cursor.execute('''CREATE TABLE IF NOT EXISTS students
(id INTEGER PRIMARY KEY,
name TEXT NOT NULL,
age INTEGER)''')

print("Tabelle erfolgreich erstellt!")

conn.commit()
conn.close()

Hier erstellen wir eine Tabelle namens 'students' mit drei Spalten: id, name und age. Die Klausel IF NOT EXISTS ist unser Sicherheitsnetz – sie verhindert Fehler, wenn wir versehentlich versuchen, dieselbe Tabelle zweimal zu erstellen.

Einfügen Operation

Es ist Zeit, einige Daten in unsere Tabelle einzufügen. Es ist, als würde man sein Spreadsheet ausfüllen!

import sqlite3

conn = sqlite3.connect('my_first_db.db')
cursor = conn.cursor()

# Einen einzelnen Datensatz einfügen
cursor.execute("INSERT INTO students (name, age) VALUES (?, ?)", ("Alice", 22))

#Mehrere Datensätze einfügen
students_data = [("Bob", 19), ("Charlie", 21), ("David", 20)]
cursor.executemany("INSERT INTO students (name, age) VALUES (?, ?)", students_data)

print("Daten erfolgreich eingefügt!")

conn.commit()
conn.close()

In diesem Beispiel fügen wir Daten in unsere 'students' Tabelle ein. Wir verwenden execute() für einen einzelnen Eintrag und executemany() für mehrere Einträge. Die ? Markierungen sind Platzhalter für unsere Daten, was vor SQL-Injection-Angriffen schützt. Sicherheit geht vor!

Auswählen Operation

Jetzt holen wir uns unsere Daten. Es ist, als würde man der Datenbank bitten, uns zu zeigen, was sie sich merkt!

import sqlite3

conn = sqlite3.connect('my_first_db.db')
cursor = conn.cursor()

# Alle Datensätze aus der students Tabelle auswählen
cursor.execute("SELECT * FROM students")

# Alle Datensätze abrufen
rows = cursor.fetchall()

for row in rows:
print(f"ID: {row[0]}, Name: {row[1]}, Alter: {row[2]}")

conn.close()

Hier wählen wir alle Datensätze aus unserer 'students' Tabelle aus und drucken sie aus. Das * in unserer SQL-Anfrage bedeutet "gib mir alles". Es ist, als würde man zur Datenbank sagen "Öffne Sesam!".

Aktualisieren Operation

Manchmal müssen wir unsere Daten ändern. Lassen Sie uns das Alter eines Schülers aktualisieren:

import sqlite3

conn = sqlite3.connect('my_first_db.db')
cursor = conn.cursor()

# Das Alter eines Schülers aktualisieren
cursor.execute("UPDATE students SET age = ? WHERE name = ?", (23, "Alice"))

print("Daten erfolgreich aktualisiert!")

conn.commit()
conn.close()

In diesem Beispiel aktualisieren wir das Alter eines Schülers in unserer 'students' Tabelle.

Credits: Image by storyset