Crea questa app per scoprire come creare una tabella di database e popolarla con i dati.
Python dispone di un eccellente supporto per database integrato nella sua libreria standard, quindi puoi creare e interagire con un database senza fare affidamento su framework esterni come Django ORM.
SQLite è leggero e facile da integrare con Python. Scopri i principi di base della programmazione di database in Python con una semplice app di registrazione degli utenti.
Come creare un database in Python
Puoi trovare il codice utilizzato per questo tutorial in questo Repositorio GitHub
Per creare e interagire con un database in Python, sono necessarie due cose principali: a connessione e un cursore.
Una connessione ti aiuta a connetterti a un database esistente o a crearne uno nuovo. Ecco come creare una connessione al database in Python con SQLite:
import sqlite3
# Connect to a (new) database
conn = sqlite3.connect('path/to/database.db')
# Close the connection
conn.close()
IL Collegare() Il metodo accetta il percorso di un database esistente. Se non è presente alcun database nel percorso specificato, ne creerà uno. Dovresti chiudere la connessione al database quando hai finito di interagire con il database.
Un cursore ti aiuta a interagire con il database connesso. Utilizzerai un cursore per eseguire query SQL all'interno del tuo programma Python. Ecco come creare un cursore:
cursor = conn.cursor()
# Close the cursor
cursor.close()
Puoi creare un cursore chiamando il comando cursore() metodo su un oggetto di connessione aperta.
Come eseguire una transazione di database in Python
Utilizzando un cursore è possibile eseguire istruzioni SQL, query o script per leggere o scrivere dati o modificare la struttura del database.
Esistono tre metodi principali che è possibile utilizzare per eseguire una transazione di database.
-
Cursore.esegui. Questo metodo eseguirà una singola istruzione SQL. Ecco come usarlo:
Questo codice chiama il eseguire metodo su un cursore, passandogli una stringa contenente un'istruzione SQL.cursor.execute(
CREATE TABLE IF NOT EXISTS users (
name TEXT,
age INTEGER
)
) -
Cursore.executemany. Questo metodo consente di eseguire la stessa istruzione SQL più di una volta, ogni volta con parametri diversi. Richiede due argomenti: l'istruzione SQL e un elemento iterabile. Un buon utilizzo è quello di inserire più oggetti nel database contemporaneamente:
Il codice precedente utilizza il file eseguirne molti metodo per inserire valori nel database più volte.data = [
('Alice', 25),
('Bob', 30),
('Charlie', 22)
]cursor.executemany(INSERT INTO users (name, age) VALUES (?, ?), data)
Notare la ? segnaposto nell'istruzione SQL. Il metodoexecutemany li sostituirà con i valori corrispondenti per ciascun oggetto.
-
Cursore.executescript. Come suggerisce il nome, questo metodo eseguirà uno script SQL per te. Puoi scrivere le tue istruzioni SQL in un file diverso ed eseguirle con il file eseguiscript metodo:
with open("path/to/script.sql") as file:
sql_script = file.read()cursor.executescript(sql_script)
Come creare un'app di registrazione con Python e SQLite3
La logica alla base di un'app di registrazione prevede l'acquisizione delle informazioni dell'utente con Python e la loro archiviazione in un database. Questi passaggi ti mostreranno come creare un semplice sistema di registrazione con Python e SQLite3.
Passaggio 1: connettersi a un database esistente o crearne uno nuovo
Inizia creando un database per la tua app o connettendoti a uno esistente:
import sqlite3
conn = sqlite3.connect('database.db')
cursor = conn.cursor()
# your app's code goes here
cursor.close()
conn.close()
Il codice precedente crea un oggetto connessione e un cursore per interagire con il database connesso.
Passaggio 2: crea una tabella per gli utenti
È necessaria una tabella in cui memorizzare i dati che gli utenti forniranno al momento della registrazione. Ecco come crearne uno con il cursore:
cursor.execute(
CREATE TABLE IF NOT EXISTS users (
first_name TEXT,
last_name TEXT,
email TEXT UNIQUE,
password TEXT
)
)
conn.commit()
Questo codice creerà una tabella chiamata utenti se non esiste nel tuo database. Crea quattro colonne nella tabella per contenere le informazioni dell'utente. Il campo email è univoco per impedire agli utenti di creare più account con la stessa email.
La chiamata a conn.commit è importante salvare la query nel database. Senza di esso, non ci saranno modifiche al database.
Se utilizzi il metodoexecutescript, puoi aggiungere la parola chiave COMMIT alla fine del file SQL, in modo da non dover chiamare conn.commit.
Passaggio 3: raccolta dei dati utente
Le funzioni Python semplificano il riutilizzo del codice, quindi è una buona idea creare una funzione per gestire la funzionalità di registrazione. Questa funzione raccoglie nome, cognome, email e password dell'utente.
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: ")
Passaggio 4: verifica la correttezza della password
Modifica il registra_utente funzione per garantire che l'utente inserisca la stessa password due volte. In caso contrario, dovresti chiedergli di reinserire la password. Puoi ottenerlo con un ciclo come questo:
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")
Con questa modifica, un utente non può registrarsi a meno che le sue password non corrispondano.
Passaggio 5: verifica l'unicità dell'email
L'istruzione SQL che crea la tabella utenti definisce il campo email come univoco. Ciò significa che il database restituirà un errore se un utente si registra con un'e-mail già esistente. Per agire in modo appropriato, è necessario gestire l'eccezione Python:
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.")
Questo codice utilizza il blocco try-eccetto per gestire l'errore che si verificherà da email duplicate. Se il database genera un IntegrityError, il ciclo while continuerà, richiedendo all'utente di inserire un indirizzo email diverso.
Per questa app di esempio, è lecito presupporre che un IntegrityError si verificherà solo come risultato di un indirizzo email duplicato. In un'app reale, probabilmente utilizzerai una gestione degli errori più avanzata per far fronte ad altri problemi che potrebbero verificarsi.
Passaggio 6: inserire i dati dell'utente nel database
Ora che hai raccolto e verificato i dati dell'utente, è il momento di aggiungerli al database. Puoi usare una query SQL fare così. Modifica il tuo blocco try-eccetto in questo modo:
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.")
Nel blocco try-eccetto modificato, il cursore esegue un'operazione di inserimento SQL. Infine, il conn.commit Il metodo esegue il commit dell'operazione SQL nel database.
Se hai seguito tutti i passaggi precedenti, dovresti avere un'applicazione che registra gli utenti e li salva nel database. Puoi usare un'app come Browser DB per SQLite per visualizzare il contenuto del tuo database:
Utilizzo di database invece di tipi di raccolta
Per i database semplici, potresti trovare più semplice eseguire il rollover del tuo codice. Tuttavia, man mano che la tua applicazione cresce e il tuo database diventa più complesso, considera l'utilizzo di uno strumento come Django ORM per semplificare l'attività.
Per continuare a mettere in pratica le tue competenze di database di basso livello, prova a implementare un sistema di accesso per integrare il programma di registrazione.