Zgradite to aplikacijo, če želite izvedeti več o ustvarjanju tabele zbirke podatkov in njenem polnjenju s podatki.
Python ima v svoji standardni knjižnici vgrajeno odlično podporo za bazo podatkov, tako da lahko ustvarjate in komunicirate z bazo podatkov, ne da bi se zanašali na zunanja ogrodja, kot je Django ORM.
SQLite je lahek in enostaven za integracijo s Pythonom. Odkrijte osnovna načela programiranja baze podatkov v Pythonu s preprosto aplikacijo za registracijo uporabnikov.
Kako ustvariti bazo podatkov v Pythonu
Tukaj lahko najdete kodo, uporabljeno za to vadnico Repozitorij GitHub
Za ustvarjanje baze podatkov in interakcijo z njo v Pythonu potrebujete dve glavni stvari: a povezava in a kazalec.
Povezava vam pomaga vzpostaviti povezavo z obstoječo bazo podatkov ali ustvariti novo. Tukaj je opisano, kako ustvarite povezavo z bazo podatkov v Pythonu s SQLite:
import sqlite3
# Connect to a (new) database
conn = sqlite3.connect('path/to/database.db')
# Close the connection
conn.close()
The povezati ()
metoda prevzame pot do obstoječe baze podatkov. Če na podani poti ni baze podatkov, jo bo ustvaril. Ko končate z interakcijo z bazo podatkov, morate zapreti povezavo z bazo podatkov.Kazalec vam pomaga komunicirati s povezano bazo podatkov. Kazalec boste uporabili za izvajanje poizvedb SQL znotraj vašega programa Python. Kazalec ustvarite tako:
cursor = conn.cursor()
# Close the cursor
cursor.close()
Kazalec lahko ustvarite tako, da pokličete kazalec() metoda na objektu odprte povezave.
Kako izvesti transakcijo baze podatkov v Pythonu
Z uporabo kazalca lahko izvajate stavke SQL, poizvedbe ali skripte za branje ali pisanje podatkov ali spreminjanje strukture baze podatkov.
Za izvedbo transakcije baze podatkov lahko uporabite tri glavne metode.
-
Kazalec.izvedi. Ta metoda bo zagnala en sam stavek SQL. Uporabite ga tako:
Ta koda kliče izvršiti na kazalcu in mu posreduje niz, ki vsebuje stavek SQL.cursor.execute(
CREATE TABLE IF NOT EXISTS users (
name TEXT,
age INTEGER
)
) -
Cursor.executemany. Ta metoda vam omogoča, da isti stavek SQL zaženete večkrat, vsakič z različnimi parametri. Potrebuje dva argumenta: stavek SQL in iterable. Dobra uporaba zanj je vstavljanje več predmetov v bazo podatkov hkrati:
Zgornja koda uporablja usmrtitimnogo metoda za večkratno vstavljanje vrednosti v bazo podatkov.data = [
('Alice', 25),
('Bob', 30),
('Charlie', 22)
]cursor.executemany(INSERT INTO users (name, age) VALUES (?, ?), data)
Upoštevajte ? ograde v stavku SQL. Metoda executemany jih bo nadomestila z ustreznimi vrednostmi za vsak objekt.
-
Cursor.executescript. Kot že ime pove, bo ta metoda namesto vas izvedla skript SQL. Stavke SQL lahko napišete v drugo datoteko in jih zaženete z izvršilni skript metoda:
with open("path/to/script.sql") as file:
sql_script = file.read()cursor.executescript(sql_script)
Kako zgraditi aplikacijo za registracijo s Pythonom in SQLite3
Logika aplikacije za registracijo vključuje pridobivanje podatkov o uporabniku s Pythonom in njihovo shranjevanje v zbirko podatkov. Ti koraki vam bodo pokazali, kako ustvariti preprost registracijski sistem s Pythonom in SQLite3.
1. korak: Povežite se z obstoječo bazo podatkov ali ustvarite novo
Začnite tako, da ustvarite zbirko podatkov za svojo aplikacijo ali se povežete z obstoječo:
import sqlite3
conn = sqlite3.connect('database.db')
cursor = conn.cursor()
# your app's code goes here
cursor.close()
conn.close()
Zgornja koda ustvari objekt povezave in kazalec za interakcijo s povezano bazo podatkov.
2. korak: Ustvarite tabelo za uporabnike
Potrebujete tabelo za shranjevanje podatkov, ki jih bodo uporabniki posredovali ob registraciji. Tukaj je opisano, kako ga ustvarite s kazalcem:
cursor.execute(
CREATE TABLE IF NOT EXISTS users (
first_name TEXT,
last_name TEXT,
email TEXT UNIQUE,
password TEXT
)
)
conn.commit()
Ta koda bo ustvarila tabelo, imenovano uporabniki če ne obstaja v vaši bazi podatkov. V tabeli ustvari štiri stolpce za shranjevanje podatkov o uporabniku. E-poštno polje je edinstveno, da uporabnikom prepreči ustvarjanje več računov z istim e-poštnim naslovom.
Klic na povezava.zavezati je pomembno, da poizvedbo prenesete v bazo podatkov. Brez tega ne bo nobenih sprememb v bazi podatkov.
Če uporabljate metodo executescript, lahko dodate ključno besedo COMMIT na konec datoteke SQL, tako da vam ni treba klicati conn.commit.
3. korak: Zberite uporabniške podatke
Funkcije Python olajšajo ponovno uporabo kode, zato je dobro ustvariti funkcijo za upravljanje funkcije registracije. Ta funkcija zbira uporabnikovo ime, priimek, e-pošto in geslo.
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: ")
4. korak: Preverite pravilnost gesla
Spremenite register_user funkcijo, ki zagotavlja, da uporabnik dvakrat vnese isto geslo. Če tega ne storijo, jih pozovite, naj znova vnesejo geslo. To lahko dosežete s takšno zanko:
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 to spremembo se uporabnik ne more registrirati, razen če se njuni gesli ne ujemata.
5. korak: Preverite edinstvenost e-pošte
Izjava SQL, ki ustvari tabelo uporabnikov, definira polje e-pošte kot edinstveno. To pomeni, da bo baza podatkov vrnila napako, če se uporabnik prijavi z e-pošto, ki že obstaja. Če želite pravilno ukrepati, morate obravnavati izjemo Python:
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.")
Ta koda uporablja blok poskusi razen za obravnavo napake, do katere pride zaradi podvojenih e-poštnih sporočil. Če zbirka podatkov vrže napako IntegrityError, se bo zanka while nadaljevala in uporabnika pozvala, naj vnese drug e-poštni naslov.
Za to vzorčno aplikacijo lahko varno domnevamo, da se bo napaka IntegrityError pojavila samo kot posledica podvojenega e-poštnega naslova. V resnični aplikaciji boste verjetno uporabili naprednejše obravnavanje napak za reševanje drugih težav, ki se lahko pojavijo.
6. korak: Vstavite podatke uporabnika v zbirko podatkov
Zdaj, ko ste zbrali in preverili podatke o uporabniku, je čas, da jih dodate v bazo podatkov. Lahko uporabiš poizvedbo SQL narediti tako. Spremenite svoj poskusni blok takole:
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 spremenjenem bloku poskusi razen kazalec izvede operacijo vstavljanja SQL. Končno, povezava.zavezati metoda potrdi operacijo SQL v bazo podatkov.
Če ste sledili vsem zgornjim korakom, bi morali imeti aplikacijo, ki registrira uporabnike in jih shrani v bazo podatkov. Uporabite lahko aplikacijo, kot je Brskalnik DB za SQLite za ogled vsebine vaše baze podatkov:
Uporaba baz podatkov namesto vrst zbirk
Pri preprostih bazah podatkov boste morda lažje zvili svojo kodo. Vendar, ko vaša aplikacija raste in baza podatkov postaja bolj zapletena, razmislite o uporabi orodja, kot je Django ORM, da poenostavite nalogo.
Če želite še naprej vaditi svoje spretnosti nizkonivojske baze podatkov, poskusite implementirati prijavni sistem, ki bo dopolnil program za registracijo.