Zbuduj tę aplikację, aby dowiedzieć się, jak utworzyć tabelę bazy danych i wypełnić ją danymi.

Python ma wbudowaną w standardową bibliotekę doskonałą obsługę baz danych, 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 znajdziesz w this Repozytorium GitHuba

Aby utworzyć bazę danych i korzystać z niej w Pythonie, potrzebujesz dwóch głównych rzeczy: a połączenie i a 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) database
conn = sqlite3.connect('path/to/database.db')

# Close the connection
conn.close()

The łączyć() Metoda 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.

instagram viewer

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 cursor
cursor.close()

Możesz utworzyć kursor, wywołując metodę kursor() metoda 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 go używać:
    cursor.execute(
    CREATE TABLE IF NOT EXISTS users (
    name TEXT,
    age INTEGER
    )
    )
    Ten kod wywołuje wykonać metodę na kursorze, przekazując jej ciąg znaków zawierający instrukcję SQL.
  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:
    data = [
    ('Alice', 25),
    ('Bob', 30),
    ('Charlie', 22)
    ]

    cursor.executemany(INSERT INTO users (name, age) VALUES (?, ?), data)

    Powyższy kod wykorzystuje wykonać wiele metoda wielokrotnego wstawiania wartości do bazy danych.

    Zanotuj ? 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 z rozszerzeniem skrypt wykonawczy metoda:
    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 sqlite3

conn = sqlite3.connect('database.db')

cursor = conn.cursor()

# your app's code goes here

cursor.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 użytkownicy jeśli nie ma go 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.

Wezwanie do połącz.zatwierdzenie ważne jest, 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.

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: ")

Krok 4: Sprawdź poprawność hasła

Zmodyfikuj zarejestruj_użytkownika funkcję zapewniającą, ż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:

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")

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 zachować się właściwie, trzeba to zrobić obsłuż wyjątek Pythona:

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

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żesz użyć zapytanie SQL aby to zrobić. 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.")
break
except sqlite3.IntegrityError:
print("Error: This email is already registered.")

W zmodyfikowanym bloku try-except kursor wykonuje operację wstawiania SQL. Wreszcie, połącz.zatwierdzenie metoda 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. Możesz użyć aplikacji takiej jak Przeglądarka DB dla SQLite aby zobaczyć zawartość swojej 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.