Bouw deze app voor meer informatie over het maken van een databasetabel en het vullen ervan met gegevens.

Python heeft uitstekende database-ondersteuning ingebouwd in de standaardbibliotheek, zodat u een database kunt maken en ermee kunt communiceren zonder afhankelijk te zijn van externe raamwerken zoals de Django ORM.

SQLite is lichtgewicht en eenvoudig te integreren met Python. Ontdek de basisprincipes van databaseprogrammering in Python met een eenvoudige gebruikersregistratie-app.

Hoe u een database in Python maakt

De code die voor deze tutorial wordt gebruikt, kun je hierin vinden GitHub-opslagplaats

Om een ​​database in Python te maken en ermee te communiceren, heb je twee belangrijke dingen nodig: verbinding en een cursor.

Met een verbinding kunt u verbinding maken met een bestaande database of een nieuwe maken. Zo maakt u een databaseverbinding in Python met SQLite:

import sqlite3

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

# Close the connection
conn.close()

instagram viewer

De aansluiten() methode neemt het pad naar een bestaande database over. Als er geen database op het opgegeven pad aanwezig is, wordt er een gemaakt. U moet uw databaseverbinding verbreken wanneer u klaar bent met de interactie met de database.

Een cursor helpt u bij de interactie met de verbonden database. U gebruikt een cursor om SQL-query's uit te voeren binnen uw Python-programma. Zo maakt u een cursor:

cursor = conn.cursor()

# Close the cursor
cursor.close()

U kunt een cursor maken door de cursor() methode op een open verbindingsobject.

Hoe een databasetransactie in Python uit te voeren

Met behulp van een cursor kunt u SQL-instructies, query's of scripts uitvoeren om gegevens te lezen of te schrijven, of de databasestructuur te wijzigen.

Er zijn drie hoofdmethoden die u kunt gebruiken om een ​​databasetransactie uit te voeren.

  1. Cursor.uitvoeren. Deze methode voert een enkele SQL-instructie uit. Zo gebruik je het:
    cursor.execute(
    CREATE TABLE IF NOT EXISTS users (
    name TEXT,
    age INTEGER
    )
    )
    Deze code noemt de uitvoeren methode op een cursor, waarbij een string wordt doorgegeven die een SQL-instructie bevat.
  2. Cursor.executemany. Met deze methode kunt u dezelfde SQL-instructie meerdere keren uitvoeren, met telkens andere parameters. Er zijn twee argumenten nodig: de SQL-instructie en een iterabele. Een goed gebruik hiervan is om meerdere objecten tegelijk in de database in te voegen:
    data = [
    ('Alice', 25),
    ('Bob', 30),
    ('Charlie', 22)
    ]

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

    De bovenstaande code gebruikt de velen executeren methode om waarden meerdere keren in de database in te voegen.

    Merk op ? tijdelijke aanduidingen in de SQL-instructie. De executemany-methode zal deze vervangen door de overeenkomstige waarden voor elk object.

  3. Cursor.executescript. Zoals de naam al doet vermoeden, voert deze methode een SQL-script voor u uit. U kunt uw SQL-instructies in een ander bestand schrijven en deze uitvoeren met de executescript methode:
    with open("path/to/script.sql") as file:
    sql_script = file.read()

    cursor.executescript(sql_script)

Hoe u een registratie-app bouwt met Python en SQLite3

De logica achter een registratie-app houdt in dat de gegevens van de gebruiker met Python worden opgehaald en in een database worden opgeslagen. Deze stappen laten zien hoe u een eenvoudig registratiesysteem kunt maken met Python en SQLite3.

Stap 1: Maak verbinding met een bestaande database of maak een nieuwe

Begin met het maken van een database voor uw app of door verbinding te maken met een bestaande database:

import sqlite3

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

cursor = conn.cursor()

# your app's code goes here

cursor.close()

conn.close()

De bovenstaande code maakt een verbindingsobject en een cursor voor interactie met de verbonden database.

Stap 2: Maak een tabel voor gebruikers

U heeft een tabel nodig om de gegevens op te slaan die gebruikers bij registratie opgeven. Zo maakt u er een met uw cursor:

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

conn.commit()

Met deze code wordt een tabel gemaakt met de naam gebruikers als deze niet in uw database voorkomt. Er worden vier kolommen in de tabel gemaakt voor gebruikersinformatie. Het e-mailveld is uniek om te voorkomen dat gebruikers meerdere accounts met hetzelfde e-mailadres maken.

De oproep om conn.commit Het is belangrijk om de query in de database vast te leggen. Zonder dit zullen er geen wijzigingen in de database plaatsvinden.

Als u de executescript-methode gebruikt, kunt u het trefwoord COMMIT aan het einde van uw SQL-bestand toevoegen, zodat u conn.commit niet hoeft aan te roepen.

Stap 3: Verzamel gebruikersgegevens

Python-functies maken het gemakkelijk om code opnieuw te gebruiken, dus het is een goed idee om een ​​functie te maken die de registratiefunctie afhandelt. Deze functie verzamelt de voornaam, achternaam, e-mail en wachtwoord van de gebruiker.

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

Stap 4: Controleer de juistheid van het wachtwoord

Wijzig de registreer_gebruiker functie om ervoor te zorgen dat de gebruiker tweemaal hetzelfde wachtwoord invoert. Als dit niet het geval is, moet u hen vragen het wachtwoord opnieuw in te voeren. Dat kun je bereiken met een lus als deze:

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

Met deze wijziging kan een gebruiker zich niet registreren, tenzij zijn wachtwoorden overeenkomen.

Stap 5: Controleer de uniciteit van de e-mail

De SQL-instructie waarmee de gebruikerstabel wordt gemaakt, definieert het e-mailveld als uniek. Dit betekent dat de database een foutmelding retourneert als een gebruiker zich aanmeldt met een e-mailadres dat al bestaat. Om adequaat te kunnen handelen, is dat nodig omgaan met de Python-uitzondering:

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

Deze code gebruikt het try-except-blok om de fout af te handelen die kan optreden als gevolg van dubbele e-mails. Als de database een IntegrityError genereert, wordt de while-lus voortgezet, waarbij de gebruiker wordt gevraagd een ander e-mailadres in te voeren.

Voor deze voorbeeld-app is het veilig om aan te nemen dat een IntegrityError alleen zal optreden als gevolg van een dubbel e-mailadres. In een echte app zul je waarschijnlijk een geavanceerdere foutafhandeling gebruiken om andere problemen op te lossen die zich kunnen voordoen.

Stap 6: Voeg de gegevens van de gebruiker in de database in

Nu u de gegevens van de gebruiker heeft verzameld en geverifieerd, is het tijd om deze aan de database toe te voegen. Je kunt gebruiken een SQL-query om dat te doen. Wijzig uw try-except-blok als volgt:

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

In het gewijzigde try-except-blok voert de cursor een SQL-invoegbewerking uit. eindelijk, de conn.commit methode legt de SQL-bewerking vast in de database.

Als u alle bovenstaande stappen heeft gevolgd, zou u een applicatie moeten hebben die gebruikers registreert en opslaat in de database. Je kunt een app gebruiken zoals DB-browser voor SQLite om de inhoud van uw database te bekijken:

Databases gebruiken in plaats van verzamelingstypen

Voor eenvoudige databases vindt u het wellicht eenvoudiger om uw eigen code te gebruiken. Naarmate uw toepassing echter groeit en uw database complexer wordt, kunt u overwegen een tool als Django ORM te gebruiken om de taak te vereenvoudigen.

Als u wilt doorgaan met het oefenen van uw databasevaardigheden op laag niveau, kunt u proberen een inlogsysteem te implementeren als aanvulling op het registratieprogramma.