Jak utworzyć aplikację rejestracyjną za pomocą języka Python i bazy danych

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.

  1. 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 )""")
  2. 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.

  3. 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 :

Aplikacja DB Browser for SQLite wyświetlająca pojedynczy rekord użytkownika w tabeli bazy danych.

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

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *