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.
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.
-
Kursor.wykonaj. Ta metoda uruchomi pojedynczą instrukcję SQL. Oto jak go używać:
Ten kod wywołuje wykonać metodę na kursorze, przekazując jej 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 wykonać wiele metoda wielokrotnego wstawiania wartości do bazy danych.data = [
('Alice', 25),
('Bob', 30),
('Charlie', 22)
]cursor.executemany(INSERT INTO users (name, age) VALUES (?, ?), data)
Zanotuj ? 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 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.