Utilisation de “pymysql” dans le “framework” : “flask”

#! /usr/bin/python
# -*- coding:utf-8 -*-
from flask import Flask, request, render_template, redirect, flash

app = Flask(__name__)
app.config["TEMPLATES_AUTO_RELOAD"] = True
app.secret_key = 'une cle(token) : grain de sel(any random string)'

                                    ## à ajouter
from flask import session, g
import pymysql.cursors

def get_db():
    if 'db' not in g:
        g.db =  pymysql.connect(
            host="localhost",                 # à modifier
            user="login",                     # à modifier
            password="secret",                # à modifier
            database="BDD_votrelogin",        # à modifier
            charset='utf8mb4',
            cursorclass=pymysql.cursors.DictCursor
        )
    return g.db

@app.teardown_appcontext
def teardown_db(exception):
    db = g.pop('db', None)
    if db is not None:
        db.close()

L’instruction @app.teardown_appcontext permet d’appeler la fonction close_connection lorsque que le serveur a fini de renvoyer une réponse.


Il faut recréer et fermer la connexion à chaque requête HTTP, sinon il y a un risque de fuite de mémoire


Exemple : CRUD type_article

Exemple de code pour ajouter/modifier/supprimer et afficher le contenu de la table “type_article” et début du CRUD sur la table “article”

CRUD type article
CRUD type article

CRUD type article

CRU article


Complèter sur le même principe, le CRUD pour ajouter/modifier/supprimer et afficher les données de la table article


CRUD article
CRUD article
CRUD article


Pour le “DELETE”, il est possible de faire comme avec le “CRUD” sur les types d’articles

exemple de fonction pour faire un état

CRUD article

Pour les plus rapides et pour le mini projet : un filtre

on désire faire une interface avec des filtres sur les articles

filtre : exemple de formulaire
filtre : mettre en session le contenu du formulaire
filtre : supprimer les variables en session
filtre : utiliser les variables en session pour former la requête
filtre : exemple de formulaire HMTL