Les langages de programmation du Web

Précédent Sommaire 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 Suivant

19. Un client MySQL en Python

Nous utiliserons le module MySQLdb (à installer) de Python pour nous connecter à un serveur MySQL.
Ainsi, sans passer par un navigateur, nous allons créer un compte avec le même résultat que le formulaire HTML de l'application 17. Création d'un compte avec une base de données MySQL.

Notez bien qu'il s'agit d'un programme Python "classique" qui a la particularité de communiquer avec un serveur MySQL : ce n'est pas une ressource CGI-Python d'un serveur Web !

Python

# -*- coding:utf-8 -*-
# script client_mysql.py
# client MySQL en Python 2.7

from Tkinter import *
from tkMessageBox import # boîte de dialogue
import re,time
import MySQLdb

def ConnexionBdd():

    # paramètres de connexion par défaut
    MYSQL_SERVER "localhost"
    MYSQL_USER "root"
    MYSQL_PASSWORD ""

    DATABASE "base_isn"
    TABLE "table_login"

    try:
        # connexion à la base de données MySQL
        bdd MySQLdb.Connect(host=MYSQL_SERVER,user=MYSQL_USER,passwd=MYSQL_PASSWORD,db=DATABASE,port=3306)
    except:
        showerror('Erreur','La connexion au serveur MySQL a échouée')
        Mafenetre.destroy()
    else:
        User Utilisateur.get()
        Password motdepasse.get()

        with bdd:
            curseur bdd.cursor(MySQLdb.cursors.DictCursor)

            if User != "" and Password != "":
                # formulaire complet
                # test du format des données du formulaire
                if re.compile("[^a-zA-Z0-9_]").search(Useror re.compile("[^a-zA-Z0-9_]").search(Password):
                    showwarning('Réponse du serveur MySQL','Erreur : les caractères autorisés sont : a-z A-Z 0-9 _')

                else:
                    # formulaire valide
                    # on teste si le nom d'utilisateur est déjà utilisé
                    # requête SQL de recherche
                    requete "SELECT utilisateur FROM "TABLE +" WHERE utilisateur = '"User +"'"
                    curseur.execute(requete)
                    if curseur.rowcount == 0# retourne le nombre de lignes
                        # le nom d'utilisateur n'est pas utilisé
                        # on ajoute une ligne dans la table
                        aujourdhui time.strftime("%Y-%m-%d"# date au format YYYY-mm-dd
                        # requête SQL d'insertion (nouvelle ligne)
                        requete "INSERT INTO "TABLE +" (utilisateur,mot_de_passe,date_inscription) VALUES('" \
                        User +"','"Password +"','"aujourdhui +"')"
                        curseur.execute(requete)

                        showinfo('Réponse du serveur MySQL','Vous êtes maintenant inscrit !')
                        Mafenetre.destroy()
                    else:
                        showwarning('Réponse du serveur MySQL',"Erreur : le nom d'utilisateur "+User+" existe déjà !")
            else:
                showwarning('Réponse du serveur MySQL','Valeurs invalides !')

        bdd.close()

# Création de la fenêtre principale (main window)
Mafenetre Tk()
Mafenetre.title('Nouveau compte')

# Création d'un widget Label
Label(Mafenetretext 'Utilisateur').grid(row=0,column=0,padx=5,pady=5)

# Création d'un widget Entry (champ de saisie)
Utilisateur StringVar()
Champ0 Entry(Mafenetre,textvariable=Utilisateur,bg ='yellow',fg='blue')
Champ0.focus_set()
Champ0.grid(row=0,column=1,padx=5,pady=5)

# Création d'un widget Label
Label(Mafenetretext 'Mot de passe').grid(row=1,column=0,padx=5,pady=5)

# Création d'un widget Entry
motdepasse StringVar()
Champ1 Entry(Mafenetre,textvariable=motdepasse,show='*',bg='yellow',fg='blue')
Champ1.grid(row=1,column=1,padx=5,pady=5)

# Création d'un widget Button
Button(Mafenetre,text='Envoyer',command=ConnexionBdd).grid(row=2,column=1,padx=5,pady=5)

Mafenetre.mainloop()