Zostavte si túto aplikáciu, aby ste sa dozvedeli o vytváraní databázovej tabuľky a jej napĺňaní údajmi.
Python má vo svojej štandardnej knižnici zabudovanú vynikajúcu databázovú podporu, takže môžete vytvárať databázu a pracovať s ňou bez toho, aby ste sa spoliehali na externé rámce, ako je Django ORM.
SQLite je ľahký a ľahko sa integruje s Pythonom. Objavte základné princípy programovania databáz v Pythone pomocou jednoduchej aplikácie na registráciu používateľov.
Ako vytvoriť databázu v Pythone
Kód použitý pre tento návod nájdete v tomto úložisko GitHub
Na vytvorenie a interakciu s databázou v Pythone potrebujete dve hlavné veci: a spojenie a a kurzor.
Pripojenie vám pomôže pripojiť sa k existujúcej databáze alebo vytvoriť novú. Tu je postup, ako vytvoriť pripojenie k databáze v Pythone s SQLite:
import sqlite3
# Connect to a (new) database
conn = sqlite3.connect('path/to/database.db')
# Close the connection
conn.close()
The pripojiť () metóda prejde na cestu k existujúcej databáze. Ak na zadanej ceste nie je žiadna databáza, vytvorí sa. Po dokončení interakcie s databázou by ste mali zatvoriť pripojenie k databáze.
Kurzor vám pomáha pri interakcii s pripojenou databázou. Kurzor použijete na spustenie SQL dotazov vo vašom programe Python. Tu je postup, ako vytvoriť kurzor:
cursor = conn.cursor()
# Close the cursor
cursor.close()
Kurzor môžete vytvoriť volaním kurzor() metóda na objekte otvoreného spojenia.
Ako vykonať databázovú transakciu v Pythone
Pomocou kurzora môžete spúšťať príkazy SQL, dotazy alebo skripty na čítanie alebo zápis údajov alebo na zmenu štruktúry databázy.
Existujú tri hlavné metódy, ktoré môžete použiť na vykonanie databázovej transakcie.
-
Cursor.execute. Táto metóda spustí jeden príkaz SQL. Používate ho takto:
Tento kód volá vykonať metóda na kurzore, ktorý mu odovzdá reťazec obsahujúci príkaz SQL.cursor.execute(
CREATE TABLE IF NOT EXISTS users (
name TEXT,
age INTEGER
)
) -
Kurzor.executemany. Táto metóda vám umožňuje spustiť rovnaký príkaz SQL viac ako raz, zakaždým s inými parametrami. Vyžaduje dva argumenty: príkaz SQL a iterovateľný. Dobré využitie je vložiť do databázy niekoľko objektov naraz:
Vyššie uvedený kód používa popraviť mnohých viacnásobné vkladanie hodnôt do databázy.data = [
('Alice', 25),
('Bob', 30),
('Charlie', 22)
]cursor.executemany(INSERT INTO users (name, age) VALUES (?, ?), data)
Všimnite si ? zástupné symboly v príkaze SQL. Metóda executemany ich nahradí zodpovedajúcimi hodnotami pre každý objekt.
-
Cursor.executescript. Ako už názov napovedá, táto metóda za vás spustí SQL skript. Príkazy SQL môžete napísať do iného súboru a spustiť ich pomocou súboru vykonávací skript metóda:
with open("path/to/script.sql") as file:
sql_script = file.read()cursor.executescript(sql_script)
Ako vytvoriť registračnú aplikáciu pomocou Pythonu a SQLite3
Logika registračnej aplikácie zahŕňa získanie informácií o používateľovi pomocou Pythonu a ich uloženie do databázy. Tieto kroky vám ukážu, ako vytvoriť jednoduchý registračný systém s Pythonom a SQLite3.
Krok 1: Pripojte sa k existujúcej databáze alebo vytvorte novú
Začnite vytvorením databázy pre svoju aplikáciu alebo pripojením k existujúcej:
import sqlite3
conn = sqlite3.connect('database.db')
cursor = conn.cursor()
# your app's code goes here
cursor.close()
conn.close()
Vyššie uvedený kód vytvorí objekt pripojenia a kurzor na interakciu s pripojenou databázou.
Krok 2: Vytvorte tabuľku pre používateľov
Potrebujete tabuľku na uloženie údajov, ktoré používatelia poskytnú pri registrácii. Tu je postup, ako ho vytvoriť pomocou kurzora:
cursor.execute(
CREATE TABLE IF NOT EXISTS users (
first_name TEXT,
last_name TEXT,
email TEXT UNIQUE,
password TEXT
)
)
conn.commit()
Tento kód vytvorí tabuľku s názvom používateľov ak vo vašej databáze neexistuje. V tabuľke vytvorí štyri stĺpce na uchovávanie informácií o používateľovi. Pole e-mailu je jedinečné, aby sa používateľom zabránilo vo vytváraní viacerých účtov s rovnakým e-mailom.
Výzva k conn.commit je dôležité odovzdať dotaz do databázy. Bez nej nedôjde k žiadnym zmenám v databáze.
Ak používate metódu spustenia skriptu, na koniec súboru SQL môžete pridať kľúčové slovo COMMIT, takže nemusíte volať conn.commit.
Krok 3: Zhromaždite údaje používateľa
Funkcie Pythonu uľahčujú opätovné použitie kódu, takže je dobré vytvoriť funkciu na spracovanie funkcie registrácie. Táto funkcia zhromažďuje meno, priezvisko, e-mail a heslo používateľa.
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: Skontrolujte správnosť hesla
Upravte register_user funkcia, ktorá zabezpečí, že používateľ zadá rovnaké heslo dvakrát. Ak nie, mali by ste ich vyzvať, aby znova zadali heslo. Môžete to dosiahnuť pomocou slučky, ako je táto:
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")
Vďaka tejto zmene sa používateľ nemôže zaregistrovať, pokiaľ sa jeho heslá nezhodujú.
Krok 5: Skontrolujte jedinečnosť e-mailu
Príkaz SQL, ktorý vytvára tabuľku používateľov, definuje pole e-mailu ako jedinečné. To znamená, že databáza vráti chybu, ak sa používateľ zaregistruje pomocou e-mailu, ktorý už existuje. Ak chcete konať správne, musíte zvládnuť výnimku 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žíva blok try-except na spracovanie chyby, ktorá sa vyskytne z duplicitných e-mailov. Ak databáza vyvolá chybu IntegrityError, cyklus while bude pokračovať a vyzve používateľa, aby zadal inú e-mailovú adresu.
V prípade tejto vzorovej aplikácie je bezpečné predpokladať, že chyba IntegrityError sa vyskytne iba v dôsledku duplicitnej e-mailovej adresy. V skutočnej aplikácii pravdepodobne použijete pokročilejšie riešenie chýb na riešenie iných problémov, ktoré sa môžu vyskytnúť.
Krok 6: Vložte údaje používateľa do databázy
Teraz, keď ste zhromaždili a overili údaje používateľa, je čas pridať ich do databázy. Môžeš použiť SQL dotaz urobiť tak. Upravte svoj 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 upravenom bloku try-except kurzor vykoná operáciu vloženia SQL. Nakoniec, conn.commit metóda odovzdá operáciu SQL do databázy.
Ak ste dodržali všetky vyššie uvedené kroky, mali by ste mať aplikáciu, ktorá registruje používateľov a ukladá ich do databázy. Môžete použiť aplikáciu ako napr DB prehliadač pre SQLite na zobrazenie obsahu databázy:
Používanie databáz namiesto typov kolekcií
Pre jednoduché databázy môže byť jednoduchšie vytvoriť vlastný kód. Keď však vaša aplikácia rastie a vaša databáza sa stáva zložitejšou, zvážte použitie nástroja ako Django ORM na zjednodušenie úlohy.
Ak chcete pokračovať v precvičovaní svojich databázových zručností na nízkej úrovni, skúste implementovať prihlasovací systém ako doplnok k registračnému programu.