A Python kiváló adatbázis-támogatással rendelkezik a szabványos könyvtárába, így létrehozhat és interakcióba léphet az adatbázisokkal anélkül, hogy külső keretrendszerekre, például a Django ORM-re támaszkodna.
Az SQLite könnyű és könnyen integrálható a Pythonnal. Fedezze fel a Python adatbázis-programozásának alapelveit egy egyszerű felhasználói regisztrációs alkalmazással.
Tartalomjegyzék
Hogyan készítsünk adatbázist Pythonban
Egy adatbázis létrehozásához és a Pythonban való interakcióhoz két fő dologra van szükség: egy kapcsolatra és egy kurzorra.
A kapcsolat segít egy meglévő adatbázishoz való csatlakozásban vagy egy új létrehozásában. Így hozhat létre adatbázis-kapcsolatot Pythonban az SQLite segítségével:
import sqlite3
conn = sqlite3.connect('path/to/database.db')
conn.close()
A connect() metódus egy létező adatbázis elérési útját használja. Ha a megadott útvonalon nincs adatbázis, akkor létrehoz egyet. Zárja le az adatbázis-kapcsolatot, ha végzett az adatbázissal.
A kurzor segít a csatlakoztatott adatbázissal való interakcióban. A kurzor segítségével SQL lekérdezéseket hajthat végre a Python programon belül. Így hozhat létre kurzort:
cursor = conn.cursor()
cursor.close()
Kurzort létrehozhat a cursor() metódus meghívásával egy nyitott kapcsolati objektumon.
Hogyan hajtsunk végre egy adatbázis-tranzakciót Pythonban
A kurzor segítségével SQL utasításokat, lekérdezéseket vagy parancsfájlokat futtathat adatok olvasásához vagy írásához, vagy módosíthatja az adatbázis szerkezetét.
Három fő módszer használható az adatbázis-tranzakciók végrehajtására.
cursor.execute("""
CREATE TABLE IF NOT EXISTS users (
name TEXT,
age INTEGER
)
""")
Ez a kód meghívja az execute metódust a kurzoron, és egy SQL utasítást tartalmazó karakterláncot ad át neki.
data = [
('Alice', 25),
('Bob', 30),
('Charlie', 22)
]cursor.executemany("""INSERT INTO users (name, age) VALUES (?, ?)""", data)
A fenti kód az executemany metódust használja az értékek többszöri beszúrására az adatbázisba.
Jegyezze meg a ? helyőrzőket az SQL utasításban. Az executemany metódus lecseréli ezeket az egyes objektumok megfelelő értékeire.
with open("path/to/script.sql") as file:
sql_script = file.read()cursor.executescript(sql_script)
Regisztrációs alkalmazás létrehozása Python és SQLite3 segítségével
A regisztrációs alkalmazások mögött meghúzódó logika magában foglalja a felhasználó adatainak Python segítségével történő lekérését és adatbázisban való tárolását. Ezek a lépések megmutatják, hogyan hozhat létre egyszerű regisztrációs rendszert Python és SQLite3 segítségével.
1. lépés: Csatlakozzon egy meglévő adatbázishoz, vagy hozzon létre egy újat
Kezdje azzal, hogy hozzon létre egy adatbázist az alkalmazáshoz, vagy csatlakozzon egy meglévőhöz:
import sqlite3conn = sqlite3.connect('database.db')
cursor = conn.cursor()
cursor.close()
conn.close()
A fenti kód létrehoz egy kapcsolati objektumot és egy kurzort a csatlakoztatott adatbázissal való interakcióhoz.
2. lépés: Hozzon létre egy táblázatot a felhasználók számára
Szüksége van egy táblázatra, ahol tárolhatja azokat az adatokat, amelyeket a felhasználók a regisztráció során megadnak. Így hozhat létre egyet a kurzorral:
cursor.execute("""
CREATE TABLE IF NOT EXISTS users (
first_name TEXT,
last_name TEXT,
email TEXT UNIQUE,
password TEXT
)
""")conn.commit()
Ez a kód létrehoz egy felhasználók nevű táblát, ha az nem létezik az adatbázisban. Négy oszlopot hoz létre a táblázatban a felhasználói információk tárolására. Az e-mail mező egyedi, így megakadályozza, hogy a felhasználók több fiókot hozzanak létre ugyanazzal az e-mail-címmel.
A conn.commit hívása fontos a lekérdezés adatbázisba való rögzítéséhez. Enélkül nem lesz változás az adatbázisban.
Ha az executescript metódust használja, hozzáadhatja a COMMIT kulcsszót az SQL fájl végéhez, így nem kell meghívnia a conn.commit parancsot.
3. lépés: Gyűjtsd össze a felhasználói adatokat
A Python függvények megkönnyítik a kód újrafelhasználását, ezért érdemes létrehozni egy függvényt a regisztrációs funkció kezelésére. Ez a funkció összegyűjti a felhasználó keresztnevét, vezetéknevét, e-mail címét és jelszavát.
def register_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. lépés: Ellenőrizze a jelszó helyességét
Módosítsa a register_user függvényt, hogy a felhasználó kétszer adja meg ugyanazt a jelszót. Ha nem, kérje meg őket, hogy írják be újra a jelszót. Ezt egy ilyen hurokkal érheti el:
def register_user():
first_name = input("Enter your first name: ")
last_name = input("Enter your last name: ")
email = input("Enter your email: ")while True:
password1 = input("Enter your password: ")
password2 = input("Confirm your password: ")
if password1 == password2:
print("You have successfully registered!")
break
else:
print("Your passwords must match")
Ezzel a változtatással a felhasználó nem regisztrálhat, ha nem egyezik a jelszava.
5. lépés: Ellenőrizze az e-mailek egyediségét
A felhasználók tábláját létrehozó SQL utasítás egyediként határozza meg az e-mail mezőt. Ez azt jelenti, hogy az adatbázis hibát ad vissza, ha a felhasználó már létező e-mail-címmel regisztrál. A megfelelő cselekvéshez kezelnie kell a Python kivételt:
def register_user():
first_name = input("Enter your first name: ")
last_name = input("Enter your last name: ")while True:
email = input("Enter your email: ")
password1 = input("Enter your password: ")
password2 = input("Confirm your password: ")
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.")
Ez a kód a try-except blokkot használja a duplikált e-mailekből származó hiba kezelésére. Ha az adatbázis IntegrityError üzenetet ad, a while ciklus folytatódik, és egy másik e-mail cím megadására kéri a felhasználót.
Ennél a példaalkalmazásnál nyugodtan feltételezhető, hogy IntegrityError csak az e-mail-cím ismétlődése miatt fordul elő. Egy valós alkalmazásban valószínűleg fejlettebb hibakezelést fog használni az esetlegesen felmerülő egyéb problémák kezelésére.
6. lépés: Illessze be a felhasználó adatait az adatbázisba
Most, hogy összegyűjtötte és ellenőrizte a felhasználó adatait, ideje felvenni azokat az adatbázisba. Ehhez SQL lekérdezést használhat. Módosítsa a try-kivéve blokkot így:
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.")
A módosított try-except blokkban a kurzor egy SQL beszúrási műveletet hajt végre. Végül a conn.commit metódus véglegesíti az SQL műveletet az adatbázisban.
Ha az összes fenti lépést követte, akkor rendelkeznie kell egy alkalmazással, amely regisztrálja a felhasználókat, és elmenti őket az adatbázisba. Használhat hasonló alkalmazást DB-böngésző SQLite-hoz az adatbázis tartalmának megtekintéséhez:
Adatbázisok használata gyűjteménytípusok helyett
Egyszerű adatbázisok esetén könnyebb lehet saját kódot görgetni. Az alkalmazás növekedésével és az adatbázis összetettebbé válásával azonban fontolja meg egy olyan eszköz használatát, mint a Django ORM a feladat egyszerűsítésére.
Az alacsony szintű adatbázis-készségek gyakorlásának folytatásához próbáljon meg egy bejelentkezési rendszert a regisztrációs program kiegészítéseként.