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

instagram viewer
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.

  1. Kazalec.izvedi. Ta metoda bo zagnala en sam stavek SQL. Uporabite ga tako:
    cursor.execute(
    CREATE TABLE IF NOT EXISTS users (
    name TEXT,
    age INTEGER
    )
    )
    Ta koda kliče izvršiti na kazalcu in mu posreduje niz, ki vsebuje stavek SQL.
  2. 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:
    data = [
    ('Alice', 25),
    ('Bob', 30),
    ('Charlie', 22)
    ]

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

    Zgornja koda uporablja usmrtitimnogo metoda za večkratno vstavljanje vrednosti v bazo podatkov.

    Upoštevajte ? ograde v stavku SQL. Metoda executemany jih bo nadomestila z ustreznimi vrednostmi za vsak objekt.

  3. 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.