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 SELCT. 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           Srilanka
Virat      Kohli                India
Rohit      Sharma               India
sqlite>

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érer des 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)
]