Créez cette application pour en savoir plus sur la création d'une table de base de données et sur son remplissage avec des données.

Python dispose d'une excellente prise en charge des bases de données intégrée dans sa bibliothèque standard, vous pouvez donc créer et interagir avec une base de données sans recourir à des frameworks externes comme l'ORM Django.

SQLite est léger et facile à intégrer à Python. Découvrez les principes de base de la programmation de bases de données en Python avec une simple application d'enregistrement des utilisateurs.

Comment créer une base de données en Python

Vous pouvez trouver le code utilisé pour ce tutoriel dans ce Dépôt GitHub

Pour créer et interagir avec une base de données en Python, vous avez besoin de deux éléments principaux: un connexion et un le curseur.

Une connexion vous aide à vous connecter à une base de données existante ou à en créer une nouvelle. Voici comment créer une connexion à une base de données en Python avec SQLite :

import sqlite3

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

instagram viewer

# Close the connection
conn.close()

Le connecter() La méthode prend le chemin d’accès à une base de données existante. S'il n'y a pas de base de données au chemin spécifié, il en créera une. Vous devez fermer votre connexion à la base de données lorsque vous avez fini d'interagir avec la base de données.

Un curseur vous aide à interagir avec la base de données connectée. Vous utiliserez un curseur pour exécuter des requêtes SQL dans votre programme Python. Voici comment créer un curseur :

cursor = conn.cursor()

# Close the cursor
cursor.close()

Vous pouvez créer un curseur en appelant le le curseur() méthode sur un objet de connexion ouvert.

Comment exécuter une transaction de base de données en Python

À l'aide d'un curseur, vous pouvez exécuter des instructions, des requêtes ou des scripts SQL pour lire ou écrire des données, ou modifier la structure de la base de données.

Il existe trois méthodes principales que vous pouvez utiliser pour exécuter une transaction de base de données.

  1. Curseur.exécuter. Cette méthode exécutera une seule instruction SQL. Voici comment l'utiliser :
    cursor.execute(
    CREATE TABLE IF NOT EXISTS users (
    name TEXT,
    age INTEGER
    )
    )
    Ce code appelle le exécuter méthode sur un curseur, en lui passant une chaîne contenant une instruction SQL.
  2. Curseur.executemany. Cette méthode vous permet d'exécuter la même instruction SQL plusieurs fois, avec des paramètres différents à chaque fois. Il faut deux arguments: l'instruction SQL et un itérable. Une bonne utilisation consiste à insérer plusieurs objets dans la base de données à la fois :
    data = [
    ('Alice', 25),
    ('Bob', 30),
    ('Charlie', 22)
    ]

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

    Le code ci-dessus utilise le exécuter plusieurs méthode pour insérer des valeurs dans la base de données plusieurs fois.

    Noter la ? espaces réservés dans l’instruction SQL. La méthodeexecutemany les remplacera par les valeurs correspondantes pour chaque objet.

  3. Curseur.executescript. Comme son nom l'indique, cette méthode exécutera un script SQL pour vous. Vous pouvez écrire vos instructions SQL dans un autre fichier et les exécuter avec le script d'exécution méthode:
    with open("path/to/script.sql") as file:
    sql_script = file.read()

    cursor.executescript(sql_script)

Comment créer une application d'enregistrement avec Python et SQLite3

La logique derrière une application d'enregistrement consiste à obtenir les informations de l'utilisateur avec Python et à les stocker dans une base de données. Ces étapes vous montreront comment créer un système d'enregistrement simple avec Python et SQLite3.

Étape 1: Connectez-vous à une base de données existante ou créez-en une nouvelle

Commencez par créer une base de données pour votre application ou connectez-vous à une base de données existante :

import sqlite3

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

cursor = conn.cursor()

# your app's code goes here

cursor.close()

conn.close()

Le code ci-dessus crée un objet de connexion et un curseur pour interagir avec la base de données connectée.

Étape 2: Créer une table pour les utilisateurs

Vous avez besoin d'un tableau pour stocker les données que les utilisateurs fourniront lors de leur inscription. Voici comment en créer un avec votre curseur :

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

conn.commit()

Ce code créera une table appelée utilisateurs s'il n'existe pas dans votre base de données. Il crée quatre colonnes dans le tableau pour contenir les informations utilisateur. Le champ email est unique pour empêcher les utilisateurs de créer plusieurs comptes avec le même email.

L'appel à conn.commit est important de valider la requête dans la base de données. Sans cela, aucune modification ne sera apportée à la base de données.

Si vous utilisez la méthodeexecutescript, vous pouvez ajouter le mot-clé COMMIT à la fin de votre fichier SQL afin de ne pas avoir à appeler conn.commit.

Étape 3: Collecter les données utilisateur

Les fonctions Python facilitent la réutilisation du code, c'est donc une bonne idée de créer une fonction pour gérer la fonctionnalité d'enregistrement. Cette fonction collecte le prénom, le nom, l'e-mail et le mot de passe de l'utilisateur.

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

Étape 4: Vérifiez l'exactitude du mot de passe

Modifier le registre_utilisateur fonction pour garantir que l’utilisateur entre le même mot de passe deux fois. Si ce n'est pas le cas, vous devez leur demander de saisir à nouveau le mot de passe. Vous pouvez y parvenir avec une boucle comme celle-ci :

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

Avec ce changement, un utilisateur ne peut s'inscrire que si ses mots de passe correspondent.

Étape 5: Vérifier l'unicité de l'e-mail

L'instruction SQL qui crée la table des utilisateurs définit le champ email comme unique. Cela signifie que la base de données renverra une erreur si un utilisateur s'inscrit avec un e-mail qui existe déjà. Pour agir de manière appropriée, vous devez gérer l'exception 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.")

Ce code utilise le bloc try-sauf pour gérer l'erreur qui se produira en cas de doublons d'e-mails. Si la base de données renvoie une IntegrityError, la boucle while se poursuivra, invitant l'utilisateur à saisir une adresse e-mail différente.

Pour cet exemple d’application, il est raisonnable de supposer qu’une IntegrityError ne se produira qu’en raison d’une adresse e-mail en double. Dans une application réelle, vous utiliserez probablement une gestion des erreurs plus avancée pour résoudre d'autres problèmes qui pourraient survenir.

Étape 6: Insérez les données de l'utilisateur dans la base de données

Maintenant que vous avez collecté et vérifié les données de l'utilisateur, il est temps de les ajouter à la base de données. Vous pouvez utiliser une requête SQL faire cela. Modifiez votre bloc try-sauf comme ceci :

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

Dans le bloc try-sauf modifié, le curseur exécute une opération d'insertion SQL. Finalement, le conn.commit La méthode valide l’opération SQL dans la base de données.

Si vous avez suivi toutes les étapes ci-dessus, vous devriez disposer d'une application qui enregistre les utilisateurs et les enregistre dans la base de données. Vous pouvez utiliser une application comme Navigateur de base de données pour SQLite pour visualiser le contenu de votre base de données :

Utiliser des bases de données au lieu de types de collections

Pour les bases de données simples, il vous sera peut-être plus facile de générer votre propre code. Cependant, à mesure que votre application grandit et que votre base de données devient plus complexe, pensez à utiliser un outil comme Django ORM pour simplifier la tâche.

Pour continuer à mettre en pratique vos compétences de bas niveau en matière de bases de données, essayez de mettre en œuvre un système de connexion pour compléter le programme d'inscription.