Byg denne app for at lære at oprette en databasetabel og udfylde den med data.

Python har fremragende databaseunderstøttelse indbygget i sit standardbibliotek, så du kan oprette og interagere med en database uden at stole på 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

Du kan finde koden, der bruges til denne vejledning, i denne GitHub-depot

For at oprette og interagere med en database i Python har du brug for to hovedting: a forbindelse og en cursoren.

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

# Connect to a (new) database
conn = sqlite3.connect('path/to/database.db')

# Close the connection
conn.close()

Det Opret forbindelse() 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.

instagram viewer

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

# Close the cursor
cursor.close()

Du kan oprette en markør ved at kalde cursoren() metode 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.

  1. 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 udføre metode på en markør ved at sende den en streng, der indeholder en SQL-sætning.
  2. 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 henrettelsesmand metode 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.

  3. 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 eksekveringsskrift metode:
    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()

# your app's code goes here

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 det 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.

Opkaldet til conn.commit er vigtigt 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 oprette en funktion til at håndtere registreringsfunktionen. Denne funktion indsamler brugerens fornavn, efternavn, e-mail og adgangskode.

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

Trin 4: Tjek adgangskodens korrekthed

Rediger register_user funktion 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:

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

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:

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

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.

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 for 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. Endelig conn.commit metoden forpligter SQL-operationen 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.