Comment créer une application d’enregistrement avec Python et une base de données

Photo of author

By pierre



Manipulation de bases de données avec Python et SQLite

Python offre une excellente intégration des bases de données grâce à sa bibliothèque standard. Vous pouvez ainsi interagir avec une base de données sans dépendre de frameworks externes comme Django ORM.

SQLite, étant léger et facile à incorporer à Python, est parfait pour découvrir les fondamentaux de la gestion de bases de données. Prenons l’exemple d’une application d’enregistrement d’utilisateurs pour illustrer ces concepts.

Créer une base de données avec Python

Pour établir et utiliser une base de données en Python, deux éléments sont essentiels : une connexion et un curseur. La connexion permet de se connecter à une base existante ou d’en créer une nouvelle.

Voici un exemple de création d’une connexion à une base de données SQLite :

 import sqlite3

conn = sqlite3.connect('chemin/vers/ma_base.db')

conn.close()

La fonction `connect()` prend en argument le chemin vers un fichier de base de données. S’il n’existe pas, il sera créé. Il est crucial de fermer la connexion après utilisation.

Un curseur, quant à lui, permet d’exécuter des requêtes SQL sur la base de données. Vous l’obtenez en utilisant la méthode `cursor()` de l’objet de connexion :

 cursor = conn.cursor()

cursor.close()

N’oubliez pas de fermer le curseur après avoir terminé vos opérations.

Exécuter des transactions de base de données

Le curseur permet d’exécuter des instructions SQL, que ce soit pour lire, écrire, ou modifier la structure de la base de données.

Voici trois méthodes principales pour exécuter une transaction :

  • cursor.execute() : Cette méthode exécute une seule instruction SQL. Par exemple, pour créer une table :
     cursor.execute("""
            CREATE TABLE IF NOT EXISTS utilisateurs (
                nom TEXT,
                age INTEGER
            )
        """)

    Ce code envoie la requête SQL à la base de données via le curseur.

  • cursor.executemany() : Cette méthode exécute une même requête SQL plusieurs fois avec des paramètres différents. Elle prend l’instruction SQL et une liste de tuples comme arguments :
     donnees = [
        ('Alice', 25),
        ('Bob', 30),
        ('Charlie', 22)
    ]
    cursor.executemany("INSERT INTO utilisateurs (nom, age) VALUES (?, ?)", donnees)

    Les `?` dans la requête sont remplacés par les valeurs correspondantes de chaque tuple.

  • cursor.executescript() : Cette méthode exécute un script SQL complet. Vous pouvez ainsi exécuter des fichiers SQL :
     with open("chemin/vers/script.sql", "r") as fichier:
        script_sql = fichier.read()
    cursor.executescript(script_sql)

Création d’une application d’enregistrement avec Python et SQLite

Le principe d’une application d’enregistrement est simple : collecter les informations des utilisateurs et les stocker dans une base de données. Voici les étapes pour créer une application d’enregistrement avec Python et SQLite3.

Étape 1 : Connexion à la base de données

Commencez par vous connecter à une base de données ou créez-en une :

 import sqlite3
conn = sqlite3.connect('ma_base_donnees.db')
cursor = conn.cursor()
cursor.close()
conn.close()

Ceci met en place une connexion et un curseur pour interagir avec la base de données.

Étape 2 : Création de la table utilisateurs

Une table est nécessaire pour sauvegarder les informations des utilisateurs. Voici comment en créer une :

 cursor.execute("""
    CREATE TABLE IF NOT EXISTS utilisateurs (
        prenom TEXT,
        nom TEXT,
        email TEXT UNIQUE,
        mot_de_passe TEXT
    )
""")
conn.commit()

Ce code crée une table « utilisateurs » avec quatre colonnes. La colonne « email » est définie comme unique pour éviter les doublons.

`conn.commit()` est indispensable pour valider les changements dans la base de données. Si vous utilisez `executescript`, le mot-clé `COMMIT` à la fin du script suffit.

Étape 3 : Collecte des données utilisateur

Il est judicieux de créer une fonction pour gérer l’enregistrement. Cette fonction demandera le prénom, nom, email et mot de passe à l’utilisateur :

 def enregistrer_utilisateur():
    prenom = input("Entrez votre prénom : ")
    nom = input("Entrez votre nom : ")
    email = input("Entrez votre email : ")
    mot_de_passe1 = input("Entrez votre mot de passe : ")
    mot_de_passe2 = input("Confirmez votre mot de passe : ")

Étape 4 : Vérification de la correspondance des mots de passe

Modifiez la fonction pour vérifier que les mots de passe saisis correspondent :

 def enregistrer_utilisateur():
    prenom = input("Entrez votre prénom : ")
    nom = input("Entrez votre nom : ")
    email = input("Entrez votre email : ")
    while True:
        mot_de_passe1 = input("Entrez votre mot de passe : ")
        mot_de_passe2 = input("Confirmez votre mot de passe : ")

        if mot_de_passe1 == mot_de_passe2:
            print("Enregistrement réussi !")
            break
        else:
            print("Les mots de passe doivent correspondre.")

Cette boucle garantit que l’utilisateur saisisse deux fois le même mot de passe.

Étape 5 : Vérification de l’unicité de l’email

La base de données renverra une erreur si un email existe déjà. Il faut donc gérer cette exception Python :

def enregistrer_utilisateur():
    prenom = input("Entrez votre prénom : ")
    nom = input("Entrez votre nom : ")
    while True:
        email = input("Entrez votre email : ")
        mot_de_passe1 = input("Entrez votre mot de passe : ")
        mot_de_passe2 = input("Confirmez votre mot de passe : ")

        if mot_de_passe1 == mot_de_passe2:
            try:
                print("Compte créé avec succès.")
                break
            except sqlite3.IntegrityError:
                print("Erreur : cet email est déjà enregistré.")
        else:
            print("Les mots de passe doivent correspondre.")

Le bloc `try-except` gère l’exception `sqlite3.IntegrityError` en cas de doublon d’email.

Étape 6 : Insertion des données dans la base de données

Une fois les données collectées et vérifiées, il faut les insérer dans la base de données :

try:
        cursor.execute("""
            INSERT INTO utilisateurs (prenom, nom, email, mot_de_passe)
            VALUES (?, ?, ?, ?)
        """, (prenom, nom, email, mot_de_passe2))
        conn.commit()
        print("Compte créé avec succès.")
        break
    except sqlite3.IntegrityError:
        print("Erreur : cet email est déjà enregistré.")

Ce code exécute l’insertion SQL et valide les modifications avec `conn.commit()`.

Si vous avez suivi ces étapes, vous disposez d’une application fonctionnelle d’enregistrement. Vous pouvez utiliser un outil comme Navigateur de base de données pour SQLite pour visualiser votre base de données.

Bases de données versus Types de Collections

Pour des bases de données simples, vous pourriez être tenté de coder tout vous-même. Cependant, lorsque votre application grandit et que votre base de données devient plus complexe, envisagez des outils comme Django ORM pour simplifier la gestion.

Pour vous exercer, ajoutez une fonctionnalité de connexion à votre programme d’enregistrement.