Izgradite ovu aplikaciju da biste naučili o stvaranju tablice baze podataka i njenom popunjavanju podacima.

Python ima izvrsnu podršku za bazu podataka ugrađenu u svoju standardnu ​​biblioteku, tako da možete stvarati i komunicirati s bazom podataka bez oslanjanja na vanjske okvire kao što je Django ORM.

SQLite je lagan i jednostavan za integraciju s Pythonom. Otkrijte osnovne principe programiranja baze podataka u Pythonu pomoću jednostavne aplikacije za registraciju korisnika.

Kako stvoriti bazu podataka u Pythonu

Ovdje možete pronaći kôd korišten za ovaj vodič GitHub spremište

Za stvaranje i interakciju s bazom podataka u Pythonu potrebne su vam dvije glavne stvari: a veza i a kursor.

Veza vam pomaže da se povežete s postojećom bazom podataka ili stvorite novu. Evo kako stvoriti vezu s bazom podataka u Pythonu s SQLiteom:

import sqlite3

# Connect to a (new) database
conn = sqlite3.connect('path/to/database.db')

# Close the connection
conn.close()

The Spojiti() metoda vodi stazu do postojeće baze podataka. Ako na navedenoj stazi nema baze podataka, kreirat će je. Trebali biste zatvoriti vezu s bazom podataka kada završite s interakcijom s bazom podataka.

instagram viewer

Kursor vam pomaže u interakciji s povezanom bazom podataka. Koristit ćete kursor za izvršavanje SQL upita unutar svog Python programa. Evo kako stvoriti kursor:

cursor = conn.cursor()

# Close the cursor
cursor.close()

Pokazivač možete stvoriti pozivom kursor() metoda na objektu otvorene veze.

Kako izvršiti transakciju baze podataka u Pythonu

Pomoću pokazivača možete pokrenuti SQL izjave, upite ili skripte za čitanje ili pisanje podataka ili promjenu strukture baze podataka.

Postoje tri glavne metode koje možete koristiti za izvršavanje transakcije baze podataka.

  1. Pokazivač.izvršiti. Ova metoda će pokrenuti jednu SQL naredbu. Evo kako ga upotrebljavate:
    cursor.execute(
    CREATE TABLE IF NOT EXISTS users (
    name TEXT,
    age INTEGER
    )
    )
    Ovaj kod naziva izvršiti metoda na kursoru, prosljeđujući mu niz koji sadrži SQL naredbu.
  2. Pokazivač.izvršitimnogo. Ova metoda vam omogućuje pokretanje iste SQL naredbe više puta, s različitim parametrima svaki put. Potrebna su dva argumenta: SQL naredba i iterable. Dobra upotreba za to je umetanje nekoliko objekata u bazu podataka odjednom:
    data = [
    ('Alice', 25),
    ('Bob', 30),
    ('Charlie', 22)
    ]

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

    Gornji kod koristi pogubitimnoge metoda za višestruko umetanje vrijednosti u bazu podataka.

    Obratite pažnju na ? rezervirana mjesta u SQL izjavi. Metoda executemany će ih zamijeniti odgovarajućim vrijednostima za svaki objekt.

  3. Pokazivač.executescript. Kao što naziv sugerira, ova metoda će umjesto vas izvršiti SQL skriptu. Možete napisati svoje SQL izjave u drugu datoteku i pokrenuti ih s izvršni skript metoda:
    with open("path/to/script.sql") as file:
    sql_script = file.read()

    cursor.executescript(sql_script)

Kako napraviti aplikaciju za registraciju pomoću Pythona i SQLite3

Logika aplikacije za registraciju uključuje dobivanje podataka o korisniku pomoću Pythona i njihovo pohranjivanje u bazu podataka. Ovi koraci pokazat će vam kako stvoriti jednostavan sustav registracije s Pythonom i SQLite3.

Korak 1: Povežite se s postojećom bazom podataka ili stvorite novu

Započnite stvaranjem baze podataka za svoju aplikaciju ili povezivanjem s postojećom:

import sqlite3

conn = sqlite3.connect('database.db')

cursor = conn.cursor()

# your app's code goes here

cursor.close()

conn.close()

Gornji kod stvara objekt veze i kursor za interakciju s povezanom bazom podataka.

Korak 2: Napravite tablicu za korisnike

Potrebna vam je tablica za pohranu podataka koje će korisnici unijeti prilikom registracije. Evo kako ga izraditi pomoću kursora:

cursor.execute(
CREATE TABLE IF NOT EXISTS users (
first_name TEXT,
last_name TEXT,
email TEXT UNIQUE,
password TEXT
)
)

conn.commit()

Ovaj kod će kreirati tablicu tzv korisnika ako ne postoji u vašoj bazi podataka. Stvara četiri stupca u tablici za držanje korisničkih podataka. Polje e-pošte je jedinstveno kako bi spriječilo korisnike da kreiraju više računa s istom e-poštom.

Poziv na spojiti.počiniti važno je unijeti upit u bazu podataka. Bez toga neće biti promjena u bazi podataka.

Ako koristite metodu executescript, možete dodati ključnu riječ COMMIT na kraj vaše SQL datoteke, tako da ne morate pozivati ​​conn.commit.

Korak 3: Prikupite korisničke podatke

Python funkcije olakšavaju ponovnu upotrebu koda, stoga je dobra ideja stvoriti funkciju za rukovanje značajkom registracije. Ova funkcija prikuplja ime, prezime, e-mail i lozinku korisnika.

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: ")

Korak 4: Provjerite ispravnost lozinke

Izmijenite registar_korisnika funkcija koja osigurava da korisnik dvaput unese istu lozinku. Ako to ne učine, trebali biste ih zatražiti da ponovno unesu lozinku. To možete postići petljom poput ove:

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

Uz ovu promjenu, korisnik se ne može registrirati osim ako se njegove lozinke ne poklapaju.

Korak 5: Provjerite jedinstvenost e-pošte

SQL izjava koja stvara tablicu korisnika definira polje e-pošte kao jedinstveno. To znači da će baza podataka vratiti pogrešku ako se korisnik prijavi s e-adresom koja već postoji. Da biste ispravno postupili, morate rukovati Python iznimkom:

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.")

Ovaj kôd koristi blok pokušaj-osim za rješavanje pogreške do koje dolazi zbog dupliciranih poruka e-pošte. Ako baza podataka izbaci IntegrityError, while petlja će se nastaviti, tražeći od korisnika da unese drugu adresu e-pošte.

Za ovaj primjer aplikacije, sigurno je pretpostaviti da će se IntegrityError pojaviti samo kao rezultat dvostruke adrese e-pošte. U stvarnoj aplikaciji vjerojatno ćete koristiti naprednije rukovanje pogreškama za rješavanje drugih problema koji se mogu pojaviti.

Korak 6: Umetnite korisničke podatke u bazu podataka

Sada kada ste prikupili i potvrdili korisničke podatke, vrijeme je da ih dodate u bazu podataka. Možeš koristiti SQL upit učiniti tako. Izmijenite svoj blok pokušaj-osim na ovaj način:

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.")

U modificiranom bloku try-except kursor izvršava SQL operaciju umetanja. Konačno, spojiti.počiniti metoda obvezuje SQL operaciju u bazu podataka.

Ako ste slijedili sve gore navedene korake, trebali biste imati aplikaciju koja registrira korisnike i sprema ih u bazu podataka. Možete koristiti aplikaciju poput DB preglednik za SQLite za pregled sadržaja vaše baze podataka:

Korištenje baza podataka umjesto tipova zbirki

Za jednostavne baze podataka, možda će vam biti lakše razviti vlastiti kod. Međutim, kako vaša aplikacija raste i vaša baza podataka postaje sve složenija, razmislite o korištenju alata kao što je Django ORM da biste pojednostavili zadatak.

Kako biste nastavili vježbati svoje vještine rada s bazom podataka niske razine, pokušajte implementirati sustav za prijavu kao nadopunu programu registracije.