Sådan opretter du en registreringsapp med Python og en database

Python har fremragende databaseunderstøttelse indbygget i sit standardbibliotek, så du kan oprette og interagere med en database uden at være afhængig af eksterne rammer som Django ORM.

SQLite er let og nem at integrere med Python. Oplev de grundlæggende principper for databaseprogrammering i Python med en simpel brugerregistreringsapp.

Sådan opretter du en database i Python

For at oprette og interagere med en database i Python har du brug for to hovedting: en forbindelse og en markør.

En forbindelse hjælper dig med at oprette forbindelse til en eksisterende database eller oprette en ny. Sådan opretter du en databaseforbindelse i Python med SQLite:

 import sqlite3


conn = sqlite3.connect('path/to/database.db')


conn.close()

Connect()-metoden tager stien til en eksisterende database. Hvis der ikke er nogen database på den angivne sti, vil den oprette en. Du bør lukke din databaseforbindelse, når du er færdig med at interagere med databasen.

En markør hjælper dig med at interagere med den tilsluttede database. Du skal bruge en markør til at udføre SQL-forespørgsler i dit Python-program. Sådan opretter du en markør:

 cursor = conn.cursor()


cursor.close()

Du kan oprette en markør ved at kalde cursor()-metoden på et åbent forbindelsesobjekt.

Sådan udføres en databasetransaktion i Python

Ved hjælp af en markør kan du køre SQL-sætninger, forespørgsler eller scripts for at læse eller skrive data eller ændre databasestrukturen.

Der er tre hovedmetoder, du kan bruge til at udføre en databasetransaktion.

  Hvordan telefonselskaber endelig bekræfter opkalds-id-numre
  • Cursor.execute. Denne metode vil køre en enkelt SQL-sætning. Sådan bruger du det:
     cursor.execute("""
        CREATE TABLE IF NOT EXISTS users (
            name TEXT,
            age INTEGER
        )
    """)

    Denne kode kalder execute-metoden på en markør og sender den en streng, der indeholder en SQL-sætning.

  • Cursor.executemany. Denne metode lader dig køre den samme SQL-sætning mere end én gang med forskellige parametre hver gang. Det kræver to argumenter: SQL-sætningen og en iterabel. En god brug for det er at indsætte flere objekter i databasen på én gang:
     data = [
        ('Alice', 25),
        ('Bob', 30),
        ('Charlie', 22)
    ]

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

    Ovenstående kode bruger executemany-metoden til at indsætte værdier i databasen flere gange.

    Bemærk ? pladsholdere i SQL-sætningen. executemany-metoden vil erstatte disse med de tilsvarende værdier for hvert objekt.

  • Cursor.executescript. Som navnet antyder, vil denne metode udføre et SQL-script for dig. Du kan skrive dine SQL-sætninger i en anden fil og køre dem med executescript-metoden:
     with open("path/to/script.sql") as file:
    sql_script = file.read()

    cursor.executescript(sql_script)

  • Sådan bygger du en registreringsapp med Python og SQLite3

    Logikken bag en registreringsapp involverer at få brugerens oplysninger med Python og gemme dem i en database. Disse trin viser dig, hvordan du opretter et simpelt registreringssystem med Python og SQLite3.

    Trin 1: Opret forbindelse til en eksisterende database eller opret en ny

    Start med at oprette en database til din app eller oprette forbindelse til en eksisterende:

     import sqlite3

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

    cursor = conn.cursor()

    cursor.close()

    conn.close()

    Koden ovenfor opretter et forbindelsesobjekt og en markør til at interagere med den tilsluttede database.

    Trin 2: Opret en tabel til brugere

    Du skal bruge en tabel til at gemme de data, som brugerne giver ved tilmelding. Sådan opretter du en med din markør:

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

    conn.commit()

    Denne kode vil oprette en tabel kaldet brugere, hvis den ikke findes i din database. Den opretter fire kolonner i tabellen til at indeholde brugeroplysninger. E-mail-feltet er unikt for at forhindre brugere i at oprette flere konti med den samme e-mail.

      16 Engelsk læringsplatforme for børn at flytte fra ABC til flydende

    Kaldet til conn.commit er vigtigt for at begå forespørgslen i databasen. Uden den vil der ikke være nogen ændringer i databasen.

    Hvis du bruger executescript-metoden, kan du tilføje nøgleordet COMMIT i slutningen af ​​din SQL-fil, så du ikke behøver at kalde conn.commit.

    Trin 3: Indsaml brugerdata

    Python-funktioner gør det nemt at genbruge kode, så det er en god idé at lave en funktion til at håndtere registreringsfunktionen. Denne funktion indsamler brugerens fornavn, efternavn, e-mail og adgangskode.

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

    Trin 4: Tjek adgangskodens korrekthed

    Rediger register_user-funktionen for at sikre, at brugeren indtaster den samme adgangskode to gange. Hvis de ikke gør det, skal du bede dem om at indtaste adgangskoden igen. Det kan du opnå med en løkke som denne:

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

    Med denne ændring kan en bruger ikke registrere sig, medmindre deres adgangskoder matcher.

    Trin 5: Tjek e-mail-entydighed

    SQL-sætningen, der opretter brugertabellen, definerer e-mail-feltet som unikt. Det betyder, at databasen vil returnere en fejl, hvis en bruger tilmelder sig med en e-mail, der allerede eksisterer. For at handle korrekt skal du håndtere Python-undtagelsen:

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

    Denne kode bruger try-except-blokken til at håndtere fejlen, der vil opstå fra duplikerede e-mails. Hvis databasen kaster en IntegrityError, fortsætter while-løkken, hvilket beder brugeren om at indtaste en anden e-mailadresse.

      8 måder at rette på, at man ikke kan sende beskeder til mange usendte multimediebeskeder

    For denne eksempelapp er det sikkert at antage, at en IntegrityError kun vil opstå som et resultat af en dublet e-mailadresse. I en rigtig app vil du sandsynligvis bruge mere avanceret fejlhåndtering til at tage højde for andre problemer, der måtte opstå.

    Trin 6: Indsæt brugerens data i databasen

    Nu hvor du har indsamlet og verificeret brugerens data, er det tid til at tilføje dem til databasen. Du kan bruge en SQL-forespørgsel til at gøre det. Rediger din prøve-undtagen blok sådan her:

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

    I den modificerede try-except-blok udfører markøren en SQL-indsættelsesoperation. Til sidst forpligter conn.commit-metoden SQL-handlingen til databasen.

    Hvis du fulgte alle ovenstående trin, skulle du have et program, der registrerer brugere og gemmer dem i databasen. Du kan bruge en app som f.eks DB Browser til SQLite for at se indholdet af din database:

    Brug af databaser i stedet for samlingstyper

    For simple databaser kan du finde det nemmere at rulle din egen kode. Men efterhånden som din applikation vokser, og din database bliver mere kompleks, kan du overveje at bruge et værktøj som Django ORM til at forenkle opgaven.

    For at fortsætte med at øve dine databasefærdigheder på lavt niveau, prøv at implementere et login-system som supplement til registreringsprogrammet.