Regisztrációs alkalmazás létrehozása Python és adatbázis segítségével

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

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. Ez a módszer egyetlen SQL utasítást fog futtatni. A következőképpen használja:
     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.

  • 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:
     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.

  • Cursor.executescript. Ahogy a neve is sugallja, ez a módszer egy SQL-szkriptet fog végrehajtani. Az SQL utasításokat egy másik fájlba írhatja, és futtathatja őket az executescript metódussal:
     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()

    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.