Sestavte si tuto aplikaci, abyste se dozvěděli o vytváření databázové tabulky a jejím naplnění daty.
Python má vynikající podporu databází zabudovanou do své standardní knihovny, takže můžete vytvářet a pracovat s databází, aniž byste se spoléhali na externí rámce, jako je Django ORM.
SQLite je lehký a snadno se integruje s Pythonem. Objevte základní principy programování databází v Pythonu pomocí jednoduché aplikace pro registraci uživatelů.
Jak vytvořit databázi v Pythonu
Kód použitý pro tento tutoriál najdete v tomto úložiště GitHub
Chcete-li vytvořit databázi a pracovat s ní v Pythonu, potřebujete dvě hlavní věci: a spojení a a kurzor.
Připojení vám pomůže připojit se k existující databázi nebo vytvořit novou. Zde je návod, jak vytvořit připojení k databázi v Pythonu s SQLite:
import sqlite3
# Connect to a (new) database
conn = sqlite3.connect('path/to/database.db')
# Close the connection
conn.close()
The připojit() metoda přebírá cestu k existující databázi. Pokud na zadané cestě není žádná databáze, vytvoří se. Po dokončení práce s databází byste měli ukončit připojení k databázi.
Kurzor vám pomáhá při interakci s připojenou databází. Kurzor použijete ke spouštění SQL dotazů v programu Python. Zde je návod, jak vytvořit kurzor:
cursor = conn.cursor()
# Close the cursor
cursor.close()
Kurzor můžete vytvořit voláním kurzor() metoda na otevřeném objektu připojení.
Jak provést databázovou transakci v Pythonu
Pomocí kurzoru můžete spouštět příkazy SQL, dotazy nebo skripty, číst nebo zapisovat data nebo měnit strukturu databáze.
Existují tři hlavní metody, které můžete použít k provedení databázové transakce.
-
Cursor.execute. Tato metoda spustí jeden příkaz SQL. Používáte ji takto:
Tento kód volá vykonat metoda na kurzor a předá mu řetězec obsahující příkaz SQL.cursor.execute(
CREATE TABLE IF NOT EXISTS users (
name TEXT,
age INTEGER
)
) -
Cursor.executemany. Tato metoda umožňuje spustit stejný příkaz SQL více než jednou, pokaždé s jinými parametry. Vyžaduje dva argumenty: příkaz SQL a iterovatelný. Dobré využití je vložit do databáze několik objektů najednou:
Výše uvedený kód používá popravit mnoho metoda pro vícenásobné vkládání hodnot do databáze.data = [
('Alice', 25),
('Bob', 30),
('Charlie', 22)
]cursor.executemany(INSERT INTO users (name, age) VALUES (?, ?), data)
Všimněte si ? zástupné symboly v příkazu SQL. Metoda executemany je nahradí odpovídajícími hodnotami pro každý objekt.
-
Cursor.executescript. Jak název napovídá, tato metoda za vás spustí SQL skript. Příkazy SQL můžete zapsat do jiného souboru a spustit je pomocí souboru vykonávací skript metoda:
with open("path/to/script.sql") as file:
sql_script = file.read()cursor.executescript(sql_script)
Jak vytvořit registrační aplikaci s Pythonem a SQLite3
Logika registrační aplikace zahrnuje získání informací o uživateli pomocí Pythonu a jejich uložení do databáze. Tyto kroky vám ukážou, jak vytvořit jednoduchý registrační systém s Pythonem a SQLite3.
Krok 1: Připojte se ke stávající databázi nebo vytvořte novou
Začněte vytvořením databáze pro vaši aplikaci nebo připojením k existující:
import sqlite3
conn = sqlite3.connect('database.db')
cursor = conn.cursor()
# your app's code goes here
cursor.close()
conn.close()
Výše uvedený kód vytvoří objekt připojení a kurzor pro interakci s připojenou databází.
Krok 2: Vytvořte tabulku pro uživatele
Potřebujete tabulku pro uložení údajů, které uživatelé poskytnou při registraci. Zde je návod, jak jej vytvořit pomocí kurzoru:
cursor.execute(
CREATE TABLE IF NOT EXISTS users (
first_name TEXT,
last_name TEXT,
email TEXT UNIQUE,
password TEXT
)
)
conn.commit()
Tento kód vytvoří tabulku s názvem uživatelů pokud ve vaší databázi neexistuje. V tabulce vytvoří čtyři sloupce, do kterých budou uloženy informace o uživateli. Pole e-mailu je jedinečné, aby uživatelům zabránilo ve vytváření více účtů se stejným e-mailem.
Výzva k conn.commit je důležité zadat dotaz do databáze. Bez něj nedojde k žádným změnám v databázi.
Pokud používáte metodu vykonatelného skriptu, můžete přidat klíčové slovo COMMIT na konec svého SQL souboru, takže nemusíte volat conn.commit.
Krok 3: Shromážděte uživatelská data
Funkce Pythonu usnadňují opětovné použití kódu, takže je dobré vytvořit funkci pro zpracování funkce registrace. Tato funkce shromažďuje jméno, příjmení, e-mail a heslo uživatele.
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: Zkontrolujte správnost hesla
Upravte register_user funkce, která zajistí, že uživatel zadá stejné heslo dvakrát. Pokud ne, měli byste je vyzvat k opětovnému zadání hesla. Můžete toho dosáhnout pomocí smyčky, jako je tato:
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")
S touto změnou se uživatel nemůže zaregistrovat, pokud se jeho hesla neshodují.
Krok 5: Zkontrolujte jedinečnost e-mailu
Příkaz SQL, který vytváří tabulku uživatelů, definuje pole e-mailu jako jedinečné. To znamená, že databáze vrátí chybu, pokud se uživatel zaregistruje pomocí e-mailu, který již existuje. Chcete-li jednat správně, musíte zvládnout výjimku Pythonu:
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.")
Tento kód používá blok try-except ke zpracování chyby, ke které dojde z duplicitních e-mailů. Pokud databáze vyvolá chybu IntegrityError, smyčka while bude pokračovat a vyzve uživatele k zadání jiné e-mailové adresy.
U této ukázkové aplikace lze bezpečně předpokládat, že k chybě IntegrityError dojde pouze v důsledku duplicitní e-mailové adresy. Ve skutečné aplikaci pravděpodobně použijete pokročilejší zpracování chyb k vyřešení dalších problémů, které mohou nastat.
Krok 6: Vložte data uživatele do databáze
Nyní, když jste shromáždili a ověřili data uživatele, je čas přidat je do databáze. Můžeš použít SQL dotaz udělat to tak. Upravte svůj blok try-except takto:
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.")
V upraveném bloku try-except kurzor provede operaci vložení SQL. Konečně, conn.commit metoda potvrdí operaci SQL do databáze.
Pokud jste dodrželi všechny výše uvedené kroky, měli byste mít aplikaci, která uživatele registruje a ukládá do databáze. Můžete použít aplikaci jako Prohlížeč DB pro SQLite pro zobrazení obsahu vaší databáze:
Použití databází namísto typů kolekcí
U jednoduchých databází může být jednodušší vytvořit vlastní kód. Jak se však vaše aplikace rozrůstá a databáze se stává složitější, zvažte použití nástroje, jako je Django ORM, ke zjednodušení úlohy.
Chcete-li pokračovat v procvičování svých nízkoúrovňových databázových dovedností, zkuste implementovat přihlašovací systém jako doplněk k registračnímu programu.