Python SQLite - Clause Where

Si vous souhaitez extraire, supprimer ou mettre à jour des lignes particulières d'une table dans SQLite, 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 dans SQLite -

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

Vous pouvez spécifier une condition de recherche à l'aide de comparaison ou d'opérateurs logiques. comme>, <, =, LIKE, NOT, etc. Les exemples suivants clarifieraient ce concept.

Exemple

Supposons que nous ayons créé une table avec le nom CRICKETERS en utilisant la requête suivante -

sqlite> CREATE TABLE CRICKETERS (
   First_Name VARCHAR(255),
   Last_Name VARCHAR(255),
   Age int,
   Place_Of_Birth VARCHAR(255),
   Country VARCHAR(255)
);
sqlite>

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

sqlite> insert into CRICKETERS values('Shikhar', 'Dhawan', 33, 'Delhi', 'India');
sqlite> insert into CRICKETERS values('Jonathan', 'Trott', 38, 'CapeTown', 'SouthAfrica');
sqlite> insert into CRICKETERS values('Kumara', 'Sangakkara', 41, 'Matale', 'Srilanka');
sqlite> insert into CRICKETERS values('Virat', 'Kohli', 30, 'Delhi', 'India');
sqlite> insert into CRICKETERS values('Rohit', 'Sharma', 32, 'Nagpur', 'India');
sqlite>

L'instruction SELECT suivante récupère les enregistrements dont l'âge est supérieur à 35 -

sqlite> SELECT * FROM CRICKETERS WHERE AGE > 35;
First_Name   Last_Name    Age    Place_Of_B   Country
----------   ----------   ----   ----------   -----------
Jonathan     Trott        38     CapeTown     SouthAfrica
Kumara       Sangakkara   41     Matale       Srilanka
sqlite>

Clause Where utilisant Python

L'objet / la classe Cursor contient toutes les méthodes pour exécuter des requêtes et extraire des données, etc. La méthode de curseur de la classe de connexion renvoie un objet curseur.

Par conséquent, pour créer une table dans la base de données SQLite en utilisant python -

  • Établissez une connexion avec une base de données à l'aide de la méthode connect ().

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

  • Exécutez maintenant l'instruction CREATE TABLE à l'aide de la méthode execute () de la classe Cursor.

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 sqlite3
#Connecting to sqlite
conn = sqlite3.connect('example.db')

#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
cursor.execute('''INSERT INTO EMPLOYEE(FIRST_NAME, LAST_NAME, AGE, SEX, INCOME) 
   VALUES ('Ramya', 'Rama priya', 27, 'F', 9000)''')
cursor.execute('''INSERT INTO EMPLOYEE(FIRST_NAME, LAST_NAME, AGE, SEX, INCOME) 
   VALUES ('Vinay', 'Battacharya', 20, 'M', 6000)''')
cursor.execute('''INSERT INTO EMPLOYEE(FIRST_NAME, LAST_NAME, AGE, SEX, INCOME) 
   VALUES ('Sharukh', 'Sheik', 25, 'M', 8300)''')
cursor.execute('''INSERT INTO EMPLOYEE(FIRST_NAME, LAST_NAME, AGE, SEX, INCOME) 
   VALUES ('Sarmista', 'Sharma', 26, 'F', 10000)''')
cursor.execute('''INSERT INTO EMPLOYEE(FIRST_NAME, LAST_NAME, AGE, SEX, INCOME) 
   VALUES ('Tripthi', 'Mishra', 24, 'F', 6000)''')

#Retrieving specific records using the where clause
cursor.execute("SELECT * from EMPLOYEE WHERE AGE <23")

print(cursor.fetchall())

#Commit your changes in the database
conn.commit()

#Closing the connection
conn.close()

Production

[('Vinay', 'Battacharya', 20, 'M', 6000.0)]