Az alkalmazás létrehozásával megtudhatja, hogyan hozhat létre adatbázistáblát és tölthet fel adatokkal.
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.
Hogyan készítsünk adatbázist Pythonban
Az oktatóanyaghoz használt kódot ebben találja GitHub adattár
Egy adatbázis létrehozásához és a Pythonban való interakcióhoz két fő dologra van szükség: a kapcsolat és a kurzor.
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
# Connect to a (new) database
conn = sqlite3.connect('path/to/database.db')
# Close the connection
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()
# Close the cursor
cursor.close()
A kurzort a kurzor() módszer 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. Ez a módszer egyetlen SQL utasítást fog futtatni. A következőképpen használja:
Ez a kód a végrehajtani metódust a kurzoron, átadva neki egy SQL utasítást tartalmazó karakterláncot.cursor.execute(
CREATE TABLE IF NOT EXISTS users (
name TEXT,
age INTEGER
)
) -
Cursor.executemany. Ezzel a módszerrel ugyanazt az SQL utasítást többször is futtathatja, minden alkalommal más paraméterekkel. Két argumentum kell hozzá: az SQL utasítás és egy iterálható. Jól használható, ha egyszerre több objektumot is beszúrunk az adatbázisba:
A fenti kód a végrehajtó módszer az értékek többszöri beszúrására az adatbázisba.data = [
('Alice', 25),
('Bob', 30),
('Charlie', 22)
]cursor.executemany(INSERT INTO users (name, age) VALUES (?, ?), data)
Jegyezze meg a ? helyőrzőket az SQL utasításban. Az executemany metódus lecseréli ezeket az egyes objektumok megfelelő értékeire.
-
Cursor.executescript. Ahogy a neve is sugallja, ez a módszer egy SQL-szkriptet fog végrehajtani. Írhatja az SQL-utasításokat egy másik fájlba, és futtathatja őket a végrehajtó szkript módszer:
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 sqlite3
conn = sqlite3.connect('database.db')
cursor = conn.cursor()
# your app's code goes here
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 táblát, melynek neve felhasználókat ha nem létezik az adatbázisában. 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 hívás conn.commit fontos, hogy a lekérdezést rögzítse az adatbázisban. 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.
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. lépés: Ellenőrizze a jelszó helyességét
Módosítsa a user_register funkció biztosítja, 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:
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")
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 meg kell tennie kezelni a Python kivételt:
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.")
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. Te tudod használni egy SQL lekérdezés hogy ezt tegye. 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 ki egy bejelentkezési rendszert, amely kiegészíti a regisztrációs programot.