UE5 : Fondamentaux du développement web frontal, niveau 2

Séance 3 : Exercices

  1. REV-1: Connecter une base de données
  2. REV-2: Ecrire un modèle de base de données (1)
  3. REV-3: Ecrire un modèle de base de données (2)
  4. APP-1: Autoincrémentation des clés primaires
  5. APP-2: Valeurs par défaut dans les champs

REV-1: Connecter une base de données

Brancher une base de données relationnelle fonctionnant sur un serveur local (PostGreSQL, MariaDB, MYSQL, etc.) à une application Flask. AU lancement de l'application, aucune erreur ne doit apparaître.

NB: Pour cet exercice, il n'est pas nécessaire de créer le modèle de la base dans Python, seule la connection est ici requise. De même, fournir la base de données n'est pas nécessaire, ce qui m'intéresse est le code Python.

Résultat attendu: Une application qui se lance.

Rendu possible:

REV-2: Ecrire un modèle de base de données (1)

A partir du modèle de données ci-dessous, écrire le modèle de base de données correspondant (i.e. le fichier models/donnees.py).

NB: Seul ce fichier est demandé dans l'exercice, le développement de l'application ou le branchement à une base de données ne sont pas nécessaires.

h:300

Rendu obligatoire:

REV-3: Ecrire un modèle de base de données (2)

A partir du modèle de données ci-dessous, écrire le modèle de base de données correspondant (i.e. le fichier models/donnees.py).

NB: Seul ce fichier est demandé dans l'exercice, le développement de l'application ou le branchement à une base de données ne sont pas nécessaires.

h:300

Rendu obligatoire:

APP-1: Autoincrémentation des clés primaires

Soit le DDL suivant de deux tables d'une base de données relationnelle PostGreSQL, écrire le modèle SQLAlchemy.

CREATE TABLE IF NOT EXISTS user
  (
     identifiant SERIAL,
     nom         VARCHAR(55) NOT NULL,
     PRIMARY KEY (identifiant)
  );

CREATE TABLE IF NOT EXISTS adresse
  (
     identifiant      SERIAL,
     user_identifiant INT,
     adresse          TEXT NOT NULL,
     debut_validite   TIMESTAMP NOT NULL,
     fin_validite     TIMESTAMP NOT NULL,
     PRIMARY KEY (identifiant),
     CONSTRAINT fk_user_identifiant 
        FOREIGN KEY (user_identifiant) 
            REFERENCES user(identifiant)
  ); 

Résultat attendu: Un fichier Python de modèle de base de données.

Rendu possible:

APP-2: Valeurs par défaut dans les champs

Reprenons le DDL de l'exercice précédent: modifier le modèle SQLAlchemy pour qu'il corresponde.

CREATE TABLE IF NOT EXISTS user
  (
     identifiant SERIAL,
     nom         VARCHAR(55) NOT NULL,
     PRIMARY KEY (identifiant)
  );

CREATE TABLE IF NOT EXISTS adresse
  (
     identifiant      SERIAL,
     user_identifiant INT,
     adresse          TEXT NOT NULL,
     debut_validite   TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
     fin_validite     TIMESTAMP NOT NULL DEFAULT (DATE('now') + INTERVAL '10 year'),
     PRIMARY KEY (identifiant),
     CONSTRAINT fk_user_identifiant 
        FOREIGN KEY (user_identifiant) 
            REFERENCES user(identifiant)
  ); 

Résultat attendu: Un fichier Python de modèle de base de données.

Rendu possible: