Erstellen Sie diese App, um zu erfahren, wie Sie eine Datenbanktabelle erstellen und diese mit Daten füllen.
Python verfügt in seiner Standardbibliothek über eine hervorragende Datenbankunterstützung, sodass Sie eine Datenbank erstellen und mit ihr interagieren können, ohne auf externe Frameworks wie Django ORM angewiesen zu sein.
SQLite ist leichtgewichtig und lässt sich leicht in Python integrieren. Entdecken Sie die Grundprinzipien der Datenbankprogrammierung in Python mit einer einfachen Benutzerregistrierungs-App.
So erstellen Sie eine Datenbank in Python
Den für dieses Tutorial verwendeten Code finden Sie hier GitHub-Repository
Um eine Datenbank in Python zu erstellen und mit ihr zu interagieren, benötigen Sie im Wesentlichen zwei Dinge: a Verbindung und ein Mauszeiger.
Eine Verbindung hilft Ihnen, eine Verbindung zu einer vorhandenen Datenbank herzustellen oder eine neue zu erstellen. So erstellen Sie eine Datenbankverbindung in Python mit SQLite:
import sqlite3
# Connect to a (new) database
conn = sqlite3.connect('path/to/database.db')
# Close the connection
conn.close()
Der verbinden() Die Methode übernimmt den Pfad zu einer vorhandenen Datenbank. Wenn im angegebenen Pfad keine Datenbank vorhanden ist, wird eine erstellt. Sie sollten Ihre Datenbankverbindung schließen, wenn Sie mit der Interaktion mit der Datenbank fertig sind.
Ein Cursor hilft Ihnen bei der Interaktion mit der verbundenen Datenbank. Sie verwenden einen Cursor, um SQL-Abfragen in Ihrem Python-Programm auszuführen. So erstellen Sie einen Cursor:
cursor = conn.cursor()
# Close the cursor
cursor.close()
Sie können einen Cursor erstellen, indem Sie den aufrufen Mauszeiger() Methode für ein offenes Verbindungsobjekt.
So führen Sie eine Datenbanktransaktion in Python aus
Mit einem Cursor können Sie SQL-Anweisungen, Abfragen oder Skripts ausführen, um Daten zu lesen oder zu schreiben oder die Datenbankstruktur zu ändern.
Es gibt drei Hauptmethoden, mit denen Sie eine Datenbanktransaktion ausführen können.
-
Cursor.execute. Diese Methode führt eine einzelne SQL-Anweisung aus. So verwenden Sie es:
Dieser Code ruft die auf ausführen Methode auf einen Cursor und übergibt ihm eine Zeichenfolge, die eine SQL-Anweisung enthält.cursor.execute(
CREATE TABLE IF NOT EXISTS users (
name TEXT,
age INTEGER
)
) -
Cursor.executemany. Mit dieser Methode können Sie dieselbe SQL-Anweisung mehrmals ausführen, jedes Mal mit unterschiedlichen Parametern. Es benötigt zwei Argumente: die SQL-Anweisung und ein iterierbares Argument. Eine gute Verwendung hierfür ist das gleichzeitige Einfügen mehrerer Objekte in die Datenbank:
Der obige Code verwendet die viele ausführen Methode zum mehrfachen Einfügen von Werten in die Datenbank.data = [
('Alice', 25),
('Bob', 30),
('Charlie', 22)
]cursor.executemany(INSERT INTO users (name, age) VALUES (?, ?), data)
Beachten Sie das ? Platzhalter in der SQL-Anweisung. Die Methode „executemany“ ersetzt diese durch die entsprechenden Werte für jedes Objekt.
-
Cursor.executescript. Wie der Name schon sagt, führt diese Methode ein SQL-Skript für Sie aus. Sie können Ihre SQL-Anweisungen in eine andere Datei schreiben und mit ausführen Skript ausführen Methode:
with open("path/to/script.sql") as file:
sql_script = file.read()cursor.executescript(sql_script)
So erstellen Sie eine Registrierungs-App mit Python und SQLite3
Die Logik hinter einer Registrierungs-App besteht darin, die Benutzerinformationen mit Python abzurufen und in einer Datenbank zu speichern. Diese Schritte zeigen Ihnen, wie Sie mit Python und SQLite3 ein einfaches Registrierungssystem erstellen.
Schritt 1: Stellen Sie eine Verbindung zu einer vorhandenen Datenbank her oder erstellen Sie eine neue
Erstellen Sie zunächst eine Datenbank für Ihre App oder stellen Sie eine Verbindung zu einer vorhandenen her:
import sqlite3
conn = sqlite3.connect('database.db')
cursor = conn.cursor()
# your app's code goes here
cursor.close()
conn.close()
Der obige Code erstellt ein Verbindungsobjekt und einen Cursor für die Interaktion mit der verbundenen Datenbank.
Schritt 2: Erstellen Sie eine Tabelle für Benutzer
Sie benötigen eine Tabelle zum Speichern der Daten, die Benutzer bei der Registrierung angeben. So erstellen Sie eines mit Ihrem Cursor:
cursor.execute(
CREATE TABLE IF NOT EXISTS users (
first_name TEXT,
last_name TEXT,
email TEXT UNIQUE,
password TEXT
)
)
conn.commit()
Dieser Code erstellt eine Tabelle mit dem Namen Benutzer wenn es nicht in Ihrer Datenbank vorhanden ist. Es erstellt vier Spalten in der Tabelle, um Benutzerinformationen zu speichern. Das E-Mail-Feld ist einzigartig, um zu verhindern, dass Benutzer mehrere Konten mit derselben E-Mail-Adresse erstellen.
Der Aufruf an conn.commit Es ist wichtig, die Abfrage in die Datenbank zu übertragen. Ohne sie werden keine Änderungen an der Datenbank vorgenommen.
Wenn Sie die Methode „executescript“ verwenden, können Sie das Schlüsselwort COMMIT am Ende Ihrer SQL-Datei hinzufügen, sodass Sie conn.commit nicht aufrufen müssen.
Schritt 3: Sammeln Sie Benutzerdaten
Python-Funktionen erleichtern die Wiederverwendung von CodeDaher ist es eine gute Idee, eine Funktion für die Registrierungsfunktion zu erstellen. Diese Funktion erfasst den Vornamen, Nachnamen, die E-Mail-Adresse und das Passwort des Benutzers.
defregister_user():
first_name = input("Enter your first name: ")
last_name = input("Enter your last name: ")
email = input("Enter your email: ")
password1 = input("Enter your password: ")
password2 = input("Confirm your password: ")
Schritt 4: Überprüfen Sie die Richtigkeit des Passworts
Modifiziere den register_user Funktion, um sicherzustellen, dass der Benutzer zweimal dasselbe Passwort eingibt. Wenn dies nicht der Fall ist, sollten Sie sie auffordern, das Passwort erneut einzugeben. Das erreichen Sie mit einer Schleife wie dieser:
defregister_user():
first_name = input("Enter your first name: ")
last_name = input("Enter your last name: ")
email = input("Enter your email: ")whileTrue:
password1 = input("Enter your password: ")
password2 = input("Confirm your password: ")
# Check password correctness
if password1 == password2:
print("You have successfully registered!")
break
else:
print("Your passwords must match")
Mit dieser Änderung kann sich ein Benutzer nur dann registrieren, wenn seine Passwörter übereinstimmen.
Schritt 5: Überprüfen Sie die Eindeutigkeit der E-Mail
Die SQL-Anweisung, die die Benutzertabelle erstellt, definiert das E-Mail-Feld als eindeutig. Dies bedeutet, dass die Datenbank einen Fehler zurückgibt, wenn sich ein Benutzer mit einer bereits vorhandenen E-Mail-Adresse anmeldet. Um angemessen zu handeln, müssen Sie es tun Behandeln Sie die Python-Ausnahme:
defregister_user():
first_name = input("Enter your first name: ")
last_name = input("Enter your last name: ")whileTrue:
email = input("Enter your email: ")
password1 = input("Enter your password: ")
password2 = input("Confirm your password: ")
# Check password correctness
if password1 == password2:
try:
print("You have successfully created an account.")
break
except sqlite3.IntegrityError:
print("Error: This email is already registered.")
else:
print("Your passwords must match.")
Dieser Code verwendet den Try-Except-Block, um den Fehler zu behandeln, der durch doppelte E-Mails auftritt. Wenn die Datenbank einen IntegrityError auslöst, wird die while-Schleife fortgesetzt und der Benutzer aufgefordert, eine andere E-Mail-Adresse einzugeben.
Bei dieser Beispiel-App kann davon ausgegangen werden, dass ein IntegrityError nur aufgrund einer doppelten E-Mail-Adresse auftritt. In einer echten App werden Sie wahrscheinlich eine erweiterte Fehlerbehandlung verwenden, um andere möglicherweise auftretende Probleme zu beheben.
Schritt 6: Fügen Sie die Daten des Benutzers in die Datenbank ein
Nachdem Sie nun die Daten des Benutzers gesammelt und überprüft haben, ist es an der Zeit, sie der Datenbank hinzuzufügen. Sie können verwenden eine SQL-Abfrage um dies zu tun. Ändern Sie Ihren Try-Except-Block wie folgt:
try:
cursor.execute(
INSERT INTO users (first_name, last_name, email, password)
VALUES (?,?,?, ?)
, (first_name, last_name, email, password2))
conn.commit()
print("You have successfully created an account.")
break
except sqlite3.IntegrityError:
print("Error: This email is already registered.")
Im geänderten Try-Exception-Block führt der Cursor eine SQL-Einfügeoperation aus. Endlich, das conn.commit Die Methode schreibt die SQL-Operation an die Datenbank fest.
Wenn Sie alle oben genannten Schritte ausgeführt haben, sollten Sie über eine Anwendung verfügen, die Benutzer registriert und in der Datenbank speichert. Sie können eine App wie verwenden DB-Browser für SQLite So zeigen Sie den Inhalt Ihrer Datenbank an:
Verwendung von Datenbanken anstelle von Sammlungstypen
Bei einfachen Datenbanken ist es möglicherweise einfacher, Ihren eigenen Code zu rollen. Wenn Ihre Anwendung jedoch wächst und Ihre Datenbank komplexer wird, sollten Sie die Verwendung eines Tools wie Django ORM in Betracht ziehen, um die Aufgabe zu vereinfachen.
Um Ihre einfachen Datenbankkenntnisse weiter zu üben, versuchen Sie, ein Anmeldesystem als Ergänzung zum Registrierungsprogramm zu implementieren.