So erstellen Sie eine Registrierungs-App mit Python und einer Datenbank
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 in diesem GitHub-Repository
Um eine Datenbank in Python zu erstellen und mit ihr zu interagieren, benötigen Sie im Wesentlichen zwei Dinge: eine Verbindung und einen Cursor .
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) databaseconn = sqlite3.connect('path/to/database.db')# Close the connectionconn.close()
Die Methode connect() ü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 cursorcursor.close()
Sie können einen Cursor erstellen, indem Sie die Cursor() -Methode für ein offenes Verbindungsobjekt aufrufen.
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 Ausführungsmethode für einen Cursor auf 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 Methode „executemany“ , um Werte mehrmals in die Datenbank einzufügen.
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 sie mit der Methodeexecutescript ausführen :
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 sqlite3conn = sqlite3.connect('database.db')cursor = conn.cursor()# your app's code goes herecursor.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 „ users“ , falls sie in Ihrer Datenbank nicht 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 von conn.commit ist wichtig, um 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 Code . Daher empfiehlt es sich, eine Funktion für die Registrierungsfunktion zu erstellen. Diese Funktion erfasst den Vornamen, Nachnamen, die E-Mail-Adresse und das Passwort des Benutzers.
def register_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
Ändern Sie die Funktion register_user , 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:
def register_user(): first_name = input("Enter your first name: ") last_name = input("Enter your last name: ") email = input("Enter your email: ") while True: 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 die Python-Ausnahme behandeln :
def register_user(): first_name = input("Enter your first name: ") last_name = input("Enter your last name: ") while True: 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 dazu eine SQL-Abfrage verwenden. Ä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.") breakexcept sqlite3.IntegrityError: print("Error: This email is already registered.")
Im geänderten Try-Exception-Block führt der Cursor eine SQL-Einfügeoperation aus. Schließlich übergibt die Methode conn.commit die SQL-Operation an die Datenbank.
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 DB Browser für SQLite verwenden , um den Inhalt Ihrer Datenbank anzuzeigen:
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.
Schreibe einen Kommentar