Python MySQL la clause Where
Si vous voulez récupérer, supprimer ou mettre à jour des lignes particulières d'une table dans MySQL, vous devez utiliser la clause where pour spécifier la condition permettant de filtrer les lignes de la table pour l'opération.
Par exemple, si vous avez une instruction SELECT avec la clause where, seules les lignes qui satisfont à la condition spécifiée seront récupérées.
Syntaxe:
La syntaxe de la clause WHERE est la suivante
SELECT colonne1, colonne2,... colonneN FROM nom_table WHERE [condition]
Exemple : Dans l'exemple suivant nous allons sélectionner, dans la table EMPLOYEE(créée dans le chapitre Créer une table MySQL), à l'aide de la clause where, les enregistrements dont l'âge est supérieur à 35 ans.
📋 Copier le code
# Importation des module nécessaires
import mysql.connector
try:
#Créer une connexion à la base de données
conn = mysql.connector.connect(
host = "localhost",
user = "votre nom utilisateur",
passwd = "votre mot de passe",
database="oujood_py"
)
# préparation d'un objet curseur
curseurObjet = conn.cursor()
#Récupération des données de la table EMPLOYEE
sql = "SELECT * from EMPLOYEE WHERE age > 35"
#Exécution de la requête
curseurObjet.execute(sql)
#Récupération du resultat
resultat = curseurObjet.fetchall();
print(resultat)
except mysql.connector.Error as error:
print("Échec de la sélection des enregistrements de la table : {}".format(error,"\n"))
finally:
if conn.is_connected():
curseurObjet.close()
conn.close()
print("\n La connexion MySQL est fermée")
De même pour supprimer des enregistrements avec la clause DELETE, on peut suprimer les enregistrements répondant à une codition donnée. Pour avoir des exemples consultez notre cours pour supprimer des enregistrements dans une table.
La clause WHERE est aussi utilisée avec la clause UPDATE pour mettre à jour des enregistrements qui répondent à une condition donnée . Pour avoir des exemples consultez notre cours surMySQL UPDATE .
ORDER BY : pour trier le résultat par ordre croissant ou décroissant
Lorsque vous récupérez des données à l'aide de la requête SELECT, vous pouvez trier les résultats dans l'ordre souhaité (ascendant ou descendant) à l'aide de la clause OrderBy. Par défaut, cette clause trie les résultats dans l'ordre croissant. Si vous souhaitez les classer dans l'ordre décroissant, vous devez utiliser explicitement le mot clé "DESC".
Syntaxe : Voici la syntaxe de la clause ORDER BY :
SELECT colonne1, colonne2,... colonneN FROM nom_table WHERE [condition] [ORDER BY column1, column2,... columnN] [ASC | DESC]
Pour récupérer le contenu d'une table dans un ordre spécifique, invoquez la méthode execute() sur l'objet curseur et passez-lui en paramètre l'instruction SELECT accompagnée de la clause ORDER BY.
Exemple : Dans l'exemple suivant, on récupère les enregistrements dans l'ordre (croissant) de leur âge, en utilisant la clause ORDER BY.
📋 Copier le code
# Importation des module nécessaires
import mysql.connector
try:
#Créer une connexion à la base de données
conn = mysql.connector.connect(
host = "localhost",
user = "votre nom utilisateur",
passwd = "votre mot de passe",
database="oujood_py"
)
# préparation d'un objet curseur
curseurObjet = conn.cursor()
#Récupération des données de la table EMPLOYEE
sql = "SELECT * from EMPLOYEE ORDER BY AGE"
#Exécution de la requête
curseurObjet.execute(sql)
#Récupération du resultat
resultat = curseurObjet.fetchall();
print(resultat)
except mysql.connector.Error as error:
print("Échec de la sélection des enregistrements de la table : {}".format(error,"\n"))
finally:
if conn.is_connected():
curseurObjet.close()
conn.close()
print("\n La connexion MySQL est fermée")
Si vous voulez trier par orqre décroissant, changez le code ci dessus en utilisant le mot clé "DESC" comme suit:
"SELECT * from EMPLOYEE ORDER BY AGE DESC"
La Clause LIMIT en utilisant python
Lorsque vous récupérez des enregistrements, si vous souhaitez récupérer un nombre donné d'enregistrements, vous pouvez le faire en utilisant la clause LIMIT de MYSQL.
Si vous invoquez la méthode execute() sur l'objet curseur en passant la requête SELECT avec la clause LIMIT, vous pouvez récupérer un nombre requis d'enregistrements.
Exemple : L'exemple python suivant utilise la clause LIMIT et récupère les trois premiers enregistrements.
📋 Copier le code
# Importation des module nécessaires
import mysql.connector
try:
#Créer une connexion à la base de données
conn = mysql.connector.connect(
host = "localhost",
user = "votre nom utilisateur",
passwd = "votre mot de passe",
database="oujood_py"
)
# préparation d'un objet curseur
curseurObjet = conn.cursor()
#Récupération des données de la table EMPLOYEE
sql = "SELECT * from EMPLOYEE LIMIT 3"
#Exécution de la requête
curseurObjet.execute(sql)
#Récupération du resultat
resultat = curseurObjet.fetchall();
print(resultat)
except mysql.connector.Error as error:
print("Échec de la sélection des enregistrements de la table : {}".format(error,"\n"))
finally:
if conn.is_connected():
curseurObjet.close()
conn.close()
print("\n La connexion MySQL est fermée")
LIMIT avec OFFSET
Si vous souhaitez sélectionner les enregistrements à partir du nième enregistrement (et non du premier), vous pouvez le faire en utilisant OFFSET avec LIMIT comme suit :
"SELECT * from EMPLOYEE LIMIT 3 OFFSET 3"
Ce qui va récupérer trois enregistrements à partir du troisième enregistrement.