Python MySQL - clausola Where

Se si desidera recuperare, eliminare o aggiornare particolari righe di una tabella in MySQL, è necessario utilizzare la clausola where per specificare la condizione per filtrare le righe della tabella per l'operazione.

Ad esempio, se si dispone di un'istruzione SELECT con la clausola where, verranno recuperate solo le righe che soddisfano la condizione specificata.

Sintassi

Di seguito è riportata la sintassi della clausola WHERE:

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

Esempio

Supponiamo di aver creato una tabella in MySQL con il nome EMPLOYEES come -

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)

E se abbiamo inserito 4 record in esso utilizzando le istruzioni INSERT come -

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);

La seguente dichiarazione MySQL recupera i record dei dipendenti il ​​cui reddito è maggiore di 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)

WHERE clausola utilizzando Python

Per recuperare record specifici da una tabella utilizzando il programma python:

  • importare mysql.connector pacchetto.

  • Crea un oggetto connessione usando il mysql.connector.connect() , passando il nome utente, la password, l'host (predefinito opzionale: localhost) e il database (opzionale) come parametri ad esso.

  • Crea un oggetto cursore richiamando il file cursor() metodo sull'oggetto connessione creato sopra.

  • Quindi, eseguire l' istruzione SELECT con la clausola WHERE , passandola come parametro al fileexecute() metodo.

Esempio

L'esempio seguente crea una tabella denominata Employee e la popola. Quindi, utilizzando la clausola where, recupera i record con un valore di età inferiore a 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()

Produzione

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