Python MySQL - Clause Where

Si vous souhaitez 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 de filtrage des 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

Voici la syntaxe de la clause WHERE -

SELECT column1, column2, columnN
FROM table_name
WHERE [condition]

Exemple

Supposons que nous ayons créé une table dans MySQL avec le nom EMPLOYEES comme -

mysql> CREATE TABLE EMPLOYEE(
   FIRST_NAME CHAR(20) NOT NULL,
   LAST_NAME CHAR(20),
   AGE INT,
   SEX CHAR(1),
   INCOME FLOAT
);
Query OK, 0 rows affected (0.36 sec)

Et si nous y avons inséré 4 enregistrements en utilisant des instructions INSERT comme -

mysql> INSERT INTO EMPLOYEE VALUES
   ('Krishna', 'Sharma', 19, 'M', 2000),
   ('Raj', 'Kandukuri', 20, 'M', 7000),
   ('Ramya', 'Ramapriya', 25, 'F', 5000),
   ('Mac', 'Mohan', 26, 'M', 2000);

L'instruction MySQL suivante récupère les enregistrements des employés dont le revenu est supérieur à 4000.

mysql> SELECT * FROM EMPLOYEE WHERE INCOME > 4000;
+------------+-----------+------+------+--------+
| FIRST_NAME | LAST_NAME | AGE  | SEX  | INCOME | 
+------------+-----------+------+------+--------+
| Raj        | Kandukuri |    20| M    | 7000   |
| Ramya      | Ramapriya |    25| F    | 5000   |
+------------+-----------+------+------+--------+
2 rows in set (0.00 sec)

Clause WHERE utilisant Python

Pour récupérer des enregistrements spécifiques d'une table à l'aide du programme python -

  • importer mysql.connector paquet.

  • Créez un objet de connexion à l'aide de mysql.connector.connect() méthode, en lui passant le nom d'utilisateur, le mot de passe, l'hôte (par défaut facultatif: localhost) et la base de données (facultatif) en tant que paramètres.

  • Créez un objet curseur en invoquant le cursor() méthode sur l'objet de connexion créé ci-dessus.

  • Ensuite, exécutez l' instruction SELECT avec la clause WHERE , en la passant en paramètre auexecute() méthode.

Exemple

L'exemple suivant crée une table nommée Employee et la remplit. Ensuite, à l'aide de la clause where, il récupère les enregistrements dont l'âge est inférieur à 23.

import mysql.connector
#establishing the connection
conn = mysql.connector.connect(
   user='root', password='password', host='127.0.0.1', database='mydb'
)

#Creating a cursor object using the cursor() method
cursor = conn.cursor()

#Doping EMPLOYEE table if already exists.
cursor.execute("DROP TABLE IF EXISTS EMPLOYEE")
sql = '''CREATE TABLE EMPLOYEE(
   FIRST_NAME CHAR(20) NOT NULL,
   LAST_NAME CHAR(20),
   AGE INT,
   SEX CHAR(1),
   INCOME FLOAT
)'''
cursor.execute(sql)
#Populating the table
insert_stmt = "INSERT INTO EMPLOYEE (
   FIRST_NAME, LAST_NAME, AGE, SEX, INCOME) VALUES (%s, %s, %s, %s, %s
)"
data = [
   ('Krishna', 'Sharma', 19, 'M', 2000), 
   ('Raj', 'Kandukuri', 20, 'M', 7000),
   ('Ramya', 'Ramapriya', 25, 'F', 5000),
   ('Mac', 'Mohan', 26, 'M', 2000)
]
cursor.executemany(insert_stmt, data)
conn.commit()
#Retrieving specific records using the where clause
cursor.execute("SELECT * from EMPLOYEE WHERE AGE <23")
print(cursor.fetchall())

#Closing the connection
conn.close()

Production

[('Krishna', 'Sharma', 19, 'M', 2000.0), ('Raj', 'Kandukuri', 20, 'M', 7000.0)]