Fastapi + sqlite template

a close-up of a device

Nous allons créer un template pour une application web avec FastAPI et SQLite. Nous utiliserons les dernières
versions de ces frameworks pour créer un modèle facilement réutilisable.

Étape 1 : Installation des Dépendances

Pour commencer, tu as besoin d’installer les dépendances nécessaires pour ton projet. Je te recommande d’utiliser la commande suivante dans ton terminal :

pip install fastapi uvicorn sqlite3

Cela installe FastAPI, Uvicorn (un serveur web ASGI) et SQLite (une base de
données légère).

Étape 2 : Création du Modèle de Données

Le deuxième pas consiste à créer un modèle de données pour ton application. Dans cet exemple, nous allons créer une table « Utilisateurs » avec des colonnes pour
l’identifiant unique, le nom et l’email.

Crée un fichier models.py dans ton dossier projet et ajoute-y les lignes suivantes :

# models.py

import sqlite3

class Utilisateur:
    """
    Modèle de données pour une table d'utilisateurs.
    """

    def __init__(self, id, nom, email):
        self.id = id  # Identifiant unique
        self.nom = nom  # Nom de l'utilisateur
        self.email = email  # Adresse e-mail de l'utilisateur

Étape 3 : Création de la Base de Données SQLite

La troisième étape consiste à créer une base de données SQLite pour ton application. Nous allons utiliser le module
sqlite3 pour cela.

Crée un fichier database.py dans ton dossier projet et ajoute-y les lignes suivantes :

# database.py

import sqlite3

class Database:
    """
    Classe pour gérer la base de données SQLite.
    """

    def __init__(self):
        self.conn = None  # Connexion à la base de données

    def connect(self):
        """
        Se connecter à la base de données.
        """
        self.conn = sqlite3.connect("database.db")  # Créer une connexion à la base de données

    def execute_query(self, query, params=None):
        """
        Exécuter une requête SQL sur la base de données.

        :param query: Requête SQL à exécuter
        :param params: Paramètres de la requête (facultatifs)
        :return: Résultats de la requête
        """
        if not self.conn:
            self.connect()  # Se connecter si nécessaire

        cur = self.conn.cursor()
        cur.execute(query, params)  # Exécuter la requête
        return cur.fetchall()

    def close_connection(self):
        """
        Fermer la connexion à la base de données.
        """
        if self.conn:
            self.conn.close()  # Fermer la connexion

Étape 4 : Création de l’Application FastAPI

La quatrième étape consiste à créer l’application FastAPI pour ton projet. Nous allons utiliser le module fastapi pour cela.

Crée un fichier main.py dans ton dossier projet et ajoute-y les lignes suivantes :

# main.py

from fastapi import FastAPI
import database
from models import Utilisateur

app = FastAPI()

database_obj = database.Database()
session = None  # Séance de connexion à la base de données

@app.on_event("startup")
def startup():
    """
    Événement de démarrage de l'application.
    """
    global session
    session = database_obj.connect()  # Se connecter à la base de données

@app.get("/")
async def read_root():
    """
    Requête GET pour la page d'accueil.

    :return: Page d'accueil
    """
    query = "SELECT * FROM utilisateurs"  # Requête SQL pour récupérer les utilisateurs
    result = database_obj.execute_query(query)  # Exécuter la requête
    return [{"id": u[0], "nom": u[1], "email": u[2]} for u in result]  # Retourner les utilisateurs

@app.on_event("shutdown")
def shutdown():
    """
    Événement de fermeture de l'application.
    """
    global session
    if session:
        database_obj.close_connection()  # Fermer la connexion

Étape 5 : Exécution de l’Application

La dernière étape consiste à exécuter l’application en utilisant la commande suivante :

uvicorn main:app --host 0.0.0.0 --port 8000

L’application sera disponible à l’adresse http://localhost:8000.

Résumé

Dans cet article, nous avons créé un template pour une application web avec FastAPI et SQLite. Nous avons utilisé les dernières versions de ces frameworks pour
créer un modèle facilement réutilisable.

Je te recommande d’utiliser ce template comme base pour créer des applications web plus complexes.

Sources :