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
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 !
# -*- 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(User) or 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(Mafenetre, text = '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(Mafenetre, text = '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()
Contenu sous licence CC BY-NC-SA 3.0
Fabrice Sincère ; version 1.5.5
Contacter l'auteur