Python SQLite - Sélectionner des données

Vous pouvez récupérer des données à partir d'une table SQLite à l'aide de la requête SELECT. Cette requête / instruction renvoie le contenu de la relation (table) spécifiée sous forme de tableau et elle est appelée comme ensemble de résultats.

Syntaxe

Voici la syntaxe de l'instruction SELECT dans SQLite -

SELECT column1, column2, columnN FROM table_name;

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>

La requête SELECT suivante récupère les valeurs des colonnes FIRST_NAME, LAST_NAME et COUNTRY de la table CRICKETERS.

sqlite> SELECT FIRST_NAME, LAST_NAME, COUNTRY FROM CRICKETERS;
Shikhar   |Dhawan       |India
Jonathan  |Trott        |SouthAfrica
Kumara    |Sangakkara   |Srilanka
Virat     |Kohli        |India
Rohit     |Sharma       |India
sqlite>

Comme vous le voyez, l'instruction SELECT de la base de données SQLite renvoie simplement les enregistrements des tables spécifiées. Pour obtenir une sortie formatée, vous devez définir leheader, et mode en utilisant les commandes respectives avant l'instruction SELECT comme indiqué ci-dessous -

sqlite> .header on
sqlite> .mode column
sqlite> SELECT FIRST_NAME, LAST_NAME, COUNTRY FROM CRICKETERS;
First_Name   Last_Name    Country
----------   ----------   ----------
Shikhar      Dhawan       India
Jonathan     Trott        SouthAfric
Kumara       Sangakkara   rilanka
Virat        Kohli        India
Rohit        Sharma       India

Si vous souhaitez récupérer toutes les colonnes de chaque enregistrement, vous devez remplacer les noms des colonnes par "*" comme indiqué ci-dessous -

sqlite> .header on
sqlite> .mode column
sqlite> SELECT * FROM CRICKETERS;
First_Name   Last_Name    Age        Place_Of_Birth   Country
----------   ----------   -------    --------------   ----------
Shikhar      Dhawan       33         Delhi            India
Jonathan     Trott        38         CapeTown         SouthAfric
Kumara       Sangakkara   41         Matale           Srilanka
Virat        Kohli        30         Delhi            India
Rohit        Sharma       32         Nagpur           India
sqlite>

Dans SQLite par défaut, la largeur des colonnes est de 10 valeurs au-delà de cette largeur sont hachées (observez la colonne country de la 2 ème ligne dans le tableau ci-dessus). Vous pouvez définir la largeur de chaque colonne sur la valeur requise à l'aide du.width commande, avant de récupérer le contenu d'un tableau comme indiqué ci-dessous -

sqlite> .width 10, 10, 4, 10, 13
sqlite> SELECT * FROM CRICKETERS;
First_Name   Last_Name    Age    Place_Of_B   Country
----------   ----------   ----   ----------   --------
Shikhar      Dhawan       33     Delhi        India
Jonathan     Trott        38     CapeTown     SouthAfrica
Kumara       Sangakkara   41     Matale       Srilanka
Virat        Kohli        30     Delhi        India
Rohit        Sharma       32     Nagpur       India
sqlite>

Récupération de données à l'aide de Python

LIRE L'opération sur n'importe quelle base de données signifie récupérer des informations utiles dans la base de données. Vous pouvez récupérer les données de MYSQL en utilisant la méthode fetch () fournie par le module python sqlite.

La classe sqlite3.Cursor fournit trois méthodes à savoir fetchall (), fetchmany () et, fetchone () où,

  • La méthode fetchall () récupère toutes les lignes du jeu de résultats d'une requête et les renvoie sous forme de liste de tuples. (Si nous exécutons ceci après avoir récupéré quelques lignes, il renvoie les autres).

  • La méthode fetchone () récupère la ligne suivante dans le résultat d'une requête et la renvoie sous forme de tuple.

  • La méthode fetchmany () est similaire à la méthode fetchone () mais elle récupère le prochain ensemble de lignes dans le jeu de résultats d'une requête, au lieu d'une seule ligne.

Note - Un jeu de résultats est un objet renvoyé lorsqu'un objet curseur est utilisé pour interroger une table.

Exemple

L'exemple suivant récupère toutes les lignes de la table EMPLOYEE à l'aide de la requête SELECT et à partir du jeu de résultats obtenu initialement, nous récupérons la première ligne à l'aide de la méthode fetchone (), puis les lignes restantes à l'aide de la méthode fetchall ().

Le programme Python suivant montre comment récupérer et afficher les enregistrements de la table COMPANY créée dans l'exemple ci-dessus.

import sqlite3
#Connecting to sqlite
conn = sqlite3.connect('example.db')

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

#Retrieving data
cursor.execute('''SELECT * from EMPLOYEE''')

#Fetching 1st row from the table
result = cursor.fetchone();
print(result)

#Fetching 1st row from the table
result = cursor.fetchall();
print(result)

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

#Closing the connection
conn.close()

Production

('Ramya', 'Rama priya', 27, 'F', 9000.0)
[
   ('Vinay', 'Battacharya', 20, 'M', 6000.0),
   ('Sharukh', 'Sheik', 25, 'M', 8300.0),
   ('Sarmista', 'Sharma', 26, 'F', 10000.0),
   ('Tripthi', 'Mishra', 24, 'F', 6000.0)
]