Jak utworzyć aplikację rejestracyjną za pomocą języka Python i bazy danych
Python ma doskonałą obsługę baz danych wbudowaną w swoją standardową bibliotekę, dzięki czemu możesz tworzyć bazę danych i wchodzić z nią w interakcję bez polegania na zewnętrznych frameworkach, takich jak Django ORM.
SQLite jest lekki i łatwy do integracji z Pythonem. Odkryj podstawowe zasady programowania baz danych w Pythonie dzięki prostej aplikacji do rejestracji użytkowników.
Jak utworzyć bazę danych w Pythonie
Kod użyty w tym samouczku można znaleźć w tym repozytorium GitHub
Do tworzenia bazy danych i interakcji z nią w Pythonie potrzebne są dwie główne rzeczy: połączenie i kursor .
Połączenie pomaga połączyć się z istniejącą bazą danych lub utworzyć nową. Oto jak utworzyć połączenie z bazą danych w Pythonie za pomocą SQLite:
import sqlite3# Connect to a (new) databaseconn = sqlite3.connect('path/to/database.db')# Close the connectionconn.close()
Metoda connect() przyjmuje ścieżkę do istniejącej bazy danych. Jeśli w podanej ścieżce nie ma bazy danych, zostanie ona utworzona. Po zakończeniu interakcji z bazą danych należy zamknąć połączenie z bazą danych.
Kursor ułatwia interakcję z podłączoną bazą danych. Będziesz używać kursora do wykonywania zapytań SQL w programie Python. Oto jak utworzyć kursor:
cursor = conn.cursor()# Close the cursorcursor.close()
Kursor można utworzyć, wywołując metodę kursor() na otwartym obiekcie połączenia.
Jak wykonać transakcję w bazie danych w Pythonie
Za pomocą kursora można uruchamiać instrukcje SQL, zapytania lub skrypty, odczytywać lub zapisywać dane lub zmieniać strukturę bazy danych.
Istnieją trzy główne metody, których można użyć do wykonania transakcji w bazie danych.
- Kursor.wykonaj . Ta metoda uruchomi pojedynczą instrukcję SQL. Oto jak z niego skorzystać: Ten kod wywołuje metodę wykonywania na kursorze, przekazując mu ciąg znaków zawierający instrukcję SQL.
cursor.execute(""" CREATE TABLE IF NOT EXISTS users ( name TEXT, age INTEGER )""")
- Kursor.executemany . Ta metoda umożliwia wielokrotne uruchomienie tej samej instrukcji SQL, za każdym razem z innymi parametrami. Pobiera dwa argumenty: instrukcję SQL i opcję iterowalną. Dobrym zastosowaniem jest wstawienie kilku obiektów do bazy danych na raz: Powyższy kod wykorzystuje metodę generatemany do wielokrotnego wstawiania wartości do bazy danych.
data = [ ('Alice', 25), ('Bob', 30), ('Charlie', 22)]cursor.executemany("""INSERT INTO users (name, age) VALUES (?,?)""", data)
Uwaga ? symbole zastępcze w instrukcji SQL. Metoda Execemany zastąpi je odpowiednimi wartościami dla każdego obiektu.
- Kursor.executescript . Jak sama nazwa wskazuje, ta metoda wykona za Ciebie skrypt SQL. Możesz zapisać swoje instrukcje SQL w innym pliku i uruchomić je za pomocą metody wykonywania skryptu :
with open("path/to/script.sql") as file: sql_script = file.read()cursor.executescript(sql_script)
Jak zbudować aplikację rejestracyjną za pomocą Pythona i SQLite3
Logika aplikacji rejestracyjnej polega na pobieraniu informacji o użytkowniku za pomocą języka Python i przechowywaniu ich w bazie danych. Poniższe kroki pokażą Ci, jak stworzyć prosty system rejestracji za pomocą Pythona i SQLite3.
Krok 1: Połącz się z istniejącą bazą danych lub utwórz nową
Zacznij od utworzenia bazy danych dla swojej aplikacji lub połączenia się z już istniejącą:
import sqlite3conn = sqlite3.connect('database.db')cursor = conn.cursor()# your app's code goes herecursor.close()conn.close()
Powyższy kod tworzy obiekt połączenia i kursor umożliwiający interakcję z połączoną bazą danych.
Krok 2: Utwórz tabelę dla użytkowników
Potrzebujesz tabeli do przechowywania danych, które użytkownicy podają podczas rejestracji. Oto jak utworzyć taki za pomocą kursora:
cursor.execute(""" CREATE TABLE IF NOT EXISTS users ( first_name TEXT, last_name TEXT, email TEXT UNIQUE, password TEXT )""")conn.commit()
Ten kod utworzy tabelę o nazwie users , jeśli nie istnieje ona w Twojej bazie danych. Tworzy cztery kolumny w tabeli do przechowywania informacji o użytkowniku. Pole e-mail jest unikalne, aby uniemożliwić użytkownikom tworzenie wielu kont z tym samym adresem e-mail.
Wywołanie conn.commit jest ważne, aby zatwierdzić zapytanie w bazie danych. Bez tego nie będzie żadnych zmian w bazie danych.
Jeśli używasz metody wykonywania skryptu, możesz dodać słowo kluczowe COMMIT na końcu pliku SQL, dzięki czemu nie będziesz musiał wywoływać conn.commit.
Krok 3: Zbierz dane użytkownika
Funkcje Pythona ułatwiają ponowne wykorzystanie kodu , dlatego dobrym pomysłem jest utworzenie funkcji obsługującej funkcję rejestracji. Ta funkcja zbiera imię, nazwisko, adres e-mail i hasło użytkownika.
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: ")
Krok 4: Sprawdź poprawność hasła
Zmodyfikuj funkcję Register_user , aby mieć pewność, że użytkownik dwukrotnie wprowadzi to samo hasło. Jeśli tego nie zrobią, poproś ich o ponowne wprowadzenie hasła. Można to osiągnąć za pomocą takiej pętli:
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")
Dzięki tej zmianie użytkownik nie będzie mógł się zarejestrować, jeśli jego hasła nie będą takie same.
Krok 5: Sprawdź niepowtarzalność adresu e-mail
Instrukcja SQL tworząca tabelę użytkowników definiuje pole e-mail jako unikalne. Oznacza to, że baza danych zwróci błąd, jeśli użytkownik zarejestruje się przy użyciu adresu e-mail, który już istnieje. Aby działać odpowiednio, musisz obsłużyć wyjątek Pythona :
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.")
W tym kodzie zastosowano blok try-except do obsługi błędu, który wystąpi w przypadku zduplikowanych wiadomości e-mail. Jeśli baza danych zgłosi błąd IntegrityError, pętla while będzie kontynuowana i poprosi użytkownika o podanie innego adresu e-mail.
W przypadku tej przykładowej aplikacji można bezpiecznie założyć, że błąd IntegrityError wystąpi tylko w wyniku zduplikowanego adresu e-mail. W prawdziwej aplikacji prawdopodobnie będziesz używać bardziej zaawansowanej obsługi błędów, aby rozwiązać inne problemy, które mogą wystąpić.
Krok 6: Wstaw dane użytkownika do bazy danych
Skoro już zebrałeś i zweryfikowałeś dane użytkownika, czas dodać je do bazy danych. Można w tym celu użyć zapytania SQL . Zmodyfikuj blok try-except w następujący sposób:
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.")
W zmodyfikowanym bloku try-except kursor wykonuje operację wstawiania SQL. Na koniec metoda conn.commit zatwierdza operację SQL w bazie danych.
Jeśli wykonałeś wszystkie powyższe kroki, powinieneś mieć aplikację, która rejestruje użytkowników i zapisuje ich do bazy danych. Aby wyświetlić zawartość bazy danych, możesz użyć aplikacji takiej jak DB Browser for SQLite :
Używanie baz danych zamiast typów kolekcji
W przypadku prostych baz danych może się okazać, że łatwiej będzie zastosować własny kod. Jednakże w miarę rozwoju aplikacji i zwiększania się złożoności bazy danych rozważ użycie narzędzia takiego jak Django ORM, aby uprościć to zadanie.
Aby kontynuować ćwiczenie umiejętności korzystania z baz danych niskiego poziomu, spróbuj wdrożyć system logowania jako uzupełnienie programu rejestracyjnego.
Dodaj komentarz