Hvordan lage en registreringsapp med Python og en database

Python har utmerket databasestøtte innebygd i standardbiblioteket, slik at du kan opprette og samhandle med en database uten å stole på eksterne rammer som Django ORM.

SQLite er lett og lett å integrere med Python. Oppdag de grunnleggende prinsippene for databaseprogrammering i Python med en enkel brukerregistreringsapp.

Hvordan lage en database i Python

For å opprette og samhandle med en database i Python trenger du to hovedting: en tilkobling og en markør.

En tilkobling hjelper deg med å koble til en eksisterende database eller opprette en ny. Slik oppretter du en databasetilkobling i Python med SQLite:

 import sqlite3


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


conn.close()

Connect()-metoden tar inn banen til en eksisterende database. Hvis det ikke er noen database på den angitte banen, vil den opprette en. Du bør lukke databasetilkoblingen når du er ferdig med å samhandle med databasen.

En markør hjelper deg å samhandle med den tilkoblede databasen. Du vil bruke en markør til å utføre SQL-spørringer i ditt Python-program. Slik lager du en markør:

 cursor = conn.cursor()


cursor.close()

Du kan opprette en markør ved å kalle cursor()-metoden på et åpent tilkoblingsobjekt.

Hvordan utføre en databasetransaksjon i Python

Ved å bruke en markør kan du kjøre SQL-setninger, spørringer eller skript for å lese eller skrive data, eller endre databasestrukturen.

Det er tre hovedmetoder du kan bruke for å utføre en databasetransaksjon.

  Lag en fantastisk treningsvideo og tjen millioner [9 Software]
  • Cursor.execute. Denne metoden vil kjøre en enkelt SQL-setning. Slik bruker du det:
     cursor.execute("""
        CREATE TABLE IF NOT EXISTS users (
            name TEXT,
            age INTEGER
        )
    """)

    Denne koden kaller execute-metoden på en markør, og sender den en streng som inneholder en SQL-setning.

  • Cursor.executemany. Denne metoden lar deg kjøre den samme SQL-setningen mer enn én gang, med forskjellige parametere hver gang. Det krever to argumenter: SQL-setningen og en iterabel. En god bruk for det er å sette inn flere objekter i databasen samtidig:
     data = [
        ('Alice', 25),
        ('Bob', 30),
        ('Charlie', 22)
    ]

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

    Koden ovenfor bruker executemany-metoden til å sette inn verdier i databasen flere ganger.

    Legg merke til ? plassholdere i SQL-setningen. Eksekveringsmetoden vil erstatte disse med tilsvarende verdier for hvert objekt.

  • Cursor.executescript. Som navnet antyder, vil denne metoden utføre et SQL-skript for deg. Du kan skrive SQL-setningene dine i en annen fil og kjøre dem med executescript-metoden:
     with open("path/to/script.sql") as file:
    sql_script = file.read()

    cursor.executescript(sql_script)

  • Hvordan bygge en registreringsapp med Python og SQLite3

    Logikken bak en registreringsapp innebærer å hente brukerens informasjon med Python og lagre dem i en database. Disse trinnene viser deg hvordan du lager et enkelt registreringssystem med Python og SQLite3.

    Trinn 1: Koble til en eksisterende database eller opprett en ny

    Start med å opprette en database for appen din eller koble til en eksisterende:

     import sqlite3

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

    cursor = conn.cursor()

    cursor.close()

    conn.close()

    Koden ovenfor oppretter et tilkoblingsobjekt og en markør for å samhandle med den tilkoblede databasen.

    Trinn 2: Lag en tabell for brukere

    Du trenger en tabell for å lagre dataene brukerne oppgir ved registrering. Slik lager du en med markøren:

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

    conn.commit()

    Denne koden vil lage en tabell kalt brukere hvis den ikke finnes i databasen din. Den oppretter fire kolonner i tabellen for å inneholde brukerinformasjon. E-postfeltet er unikt for å hindre brukere i å opprette flere kontoer med samme e-post.

      5 beste nettsteder for å finne pennevenner over hele verden og få nye venner

    Anropet til conn.commit er viktig for å sende spørringen inn i databasen. Uten det blir det ingen endringer i databasen.

    Hvis du bruker executescript-metoden, kan du legge til nøkkelordet COMMIT på slutten av SQL-filen din, slik at du ikke trenger å ringe conn.commit.

    Trinn 3: Samle inn brukerdata

    Python-funksjoner gjør det enkelt å gjenbruke kode, så det er en god idé å lage en funksjon for å håndtere registreringsfunksjonen. Denne funksjonen samler inn brukerens fornavn, etternavn, e-post og passord.

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

    Trinn 4: Kontroller passordets korrekthet

    Endre register_user-funksjonen for å sikre at brukeren skriver inn det samme passordet to ganger. Hvis de ikke gjør det, bør du be dem om å skrive inn passordet på nytt. Du kan oppnå det med en løkke som dette:

     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 endringen kan en bruker ikke registrere seg med mindre passordene deres samsvarer.

    Trinn 5: Sjekk e-postens unikehet

    SQL-setningen som oppretter brukertabellen definerer e-postfeltet som unikt. Dette betyr at databasen vil returnere en feil hvis en bruker registrerer seg med en e-post som allerede eksisterer. For å handle riktig, må du håndtere Python-unntaket:

     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 koden bruker try-except-blokken for å håndtere feilen som vil oppstå fra dupliserte e-poster. Hvis databasen kaster en IntegrityError, vil while-løkken fortsette, og brukeren blir bedt om å angi en annen e-postadresse.

      15 Notion Habit Tracker-maler for å hjelpe deg med å holde deg på sporet

    For denne eksempelappen er det trygt å anta at en IntegrityError bare vil oppstå som et resultat av en duplikat e-postadresse. I en ekte app vil du sannsynligvis bruke mer avansert feilhåndtering for å imøtekomme andre problemer som kan oppstå.

    Trinn 6: Sett inn brukerens data i databasen

    Nå som du har samlet inn og verifisert brukerens data, er det på tide å legge dem til i databasen. Du kan bruke en SQL-spørring for å gjøre det. Endre prøve-unntatt blokken slik:

     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 modifiserte try-except-blokken utfører markøren en SQL-innsettingsoperasjon. Til slutt forplikter conn.commit-metoden SQL-operasjonen til databasen.

    Hvis du fulgte alle trinnene ovenfor, bør du ha en applikasjon som registrerer brukere og lagrer dem i databasen. Du kan bruke en app som DB-nettleser for SQLite for å se innholdet i databasen din:

    Bruke databaser i stedet for samlingstyper

    For enkle databaser kan det være lettere å rulle din egen kode. Men etter hvert som applikasjonen din vokser og databasen blir mer kompleks, bør du vurdere å bruke et verktøy som Django ORM for å forenkle oppgaven.

    For å fortsette å øve på databaseferdighetene dine på lavt nivå, prøv å implementere et påloggingssystem for å komplettere registreringsprogrammet.