Implementierung von SELECT-Anweisungen in einer SQLite3-Datenbank via Python

In einem früheren Beitrag zu SQLite3 und Python habe ich einer SQLite 3-Datenbank zwei verwandte Tabellen hinzugefügt, via Python. Die Tabellen heißen UniversitätenTBxx und StudentenTBxx. Beide Tabellen werden in einer Datenbank namens “newDatabase.db” gespeichert. Die Studenten sind an einer Universität eingeschrieben. Informationen zur jeweiligen Universität sind in der Tabelle TBTX der Universität enthalten.

In diesem Beitrag werde ich eine grundlegende SQL-Abfrage zum Abrufen von Daten aus der SQLite 3-Datenbank implementieren. Lassen Sie uns zunächst die Implementierung einer relevanten Funktion zum Erstellen einer Datenbankverbindung wiederholen:

# SQLite3-Modul importieren
import sqlite3

# Diese Funktion erstellt eine Datenbankverbindung zu einer Datenbankdatei
# Parameter: Name der Datenbankdatei
# Rückgabewert: Datenbankverbindung
def create_connection(db_file):
    conn = None
    try:
        conn = sqlite3.connect(db_file)
        return conn
    except Error as e:
        print(e)
    return conn

Da wir den Datenbanknamen kennen, können wir jetzt mit der obigen Funktion eine Verbindung herstellen:

# Abrufen eines Referenzhandlers für die Verbindung mit der Datenbank
dbConnection = create_connection("newDatabase.db")

Wir haben jetzt einen Verweis auf die Verbindung zur entsprechenden Datenbank. Implementieren wir einen SELECT * -Befehl für die Universitätstabelle mit Python und dem sqlite3-Modul:

cursorObj = dbConnection.cursor()
cursorObj.execute("SELECT * FROM universitiesTBxx")
rowList = cursorObj.fetchall()
for row in rowList:
    print(row)
('MIT', 'USA')
('ETH', 'CH')
('DTU', 'DK')

Wir könnten z.B. versuchen Sie auch eine SELECT * FROM tableName WHERE-Bedingungsanweisung. Ich möchte z.B. nur Studenten zurückgeben, die an der ETH Zürich studiert haben:

cursorObj.execute("SELECT * FROM studentsTBxx WHERE university = 'ETH'")
rowList = cursorObj.fetchall()
for row in rowList:
    print(row)
(1, 'Linnart', 'ETH', 'MSc')

Wir könnten auch eine Funktion implementieren, die generisch die Ausführung einer SELECT-Anweisung aus einem parametrisierten Tabellennamen unter Verwendung parametrischer Filter ermöglicht.

Leave a Reply

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.

Close

Meta