Come creare un’app di registrazione con Python e un database

Come creare un’app di registrazione con Python e un database

Python ha 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 repository GitHub

Per creare e interagire con un database in Python, sono necessarie due cose principali: una 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) databaseconn = sqlite3.connect('path/to/database.db')# Close the connectionconn.close()

Il metodo connect() 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 cursorcursor.close()

È possibile creare un cursore chiamando il metodo cursor() su un oggetto 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.

  1. Cursore.esegui . Questo metodo eseguirà una singola istruzione SQL. Ecco come usarlo: questo codice chiama il metodo di esecuzione su un cursore, passandogli una stringa contenente un’istruzione SQL. cursor.execute(""" CREATE TABLE IF NOT EXISTS users ( name TEXT, age INTEGER )""")
  2. 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 è inserire più oggetti nel database contemporaneamente: il codice precedente utilizza il metodoexecutemany per inserire valori nel database più volte.
    data = [ ('Alice', 25), ('Bob', 30), ('Charlie', 22)]cursor.executemany("""INSERT INTO users (name, age) VALUES (?,?)""", data)

    Notare il ? segnaposto nell’istruzione SQL. Il metodoexecutemany li sostituirà con i valori corrispondenti per ciascun oggetto.

  3. 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 metodoexecuscript : 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 sqlite3conn = sqlite3.connect('database.db')cursor = conn.cursor()# your app's code goes herecursor.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 users 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 per confermare 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.

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

Passaggio 4: verifica la correttezza della password

Modificare la funzione Register_user 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:

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

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: ") # 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. A tale scopo è possibile utilizzare una query SQL . 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.") breakexcept sqlite3.IntegrityError: print("Error: This email is already registered.")

Nel blocco try-eccetto modificato, il cursore esegue un’operazione di inserimento SQL. Infine, il metodo conn.commit conferma l’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 utilizzare un’app come DB Browser for SQLite per visualizzare il contenuto del tuo database:

L'app DB Browser per SQLite che mostra un singolo record utente in una tabella di 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.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *