Python PostgreSQL - Sélectionner des données

Vous pouvez récupérer le contenu d'une table existante dans PostgreSQL à l'aide de l'instruction SELECT. À cette instruction, vous devez spécifier le nom de la table et, elle renvoie son contenu au format tabulaire qui est connu sous le nom de jeu de résultats.

Syntaxe

Voici la syntaxe de l'instruction SELECT dans PostgreSQL -

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 -

postgres=# CREATE TABLE CRICKETERS (
   First_Name VARCHAR(255), Last_Name VARCHAR(255), 
   Age int, Place_Of_Birth VARCHAR(255), Country VARCHAR(255)
);
CREATE TABLE
postgres=#

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

postgres=# insert into CRICKETERS values('Shikhar', 'Dhawan', 33, 'Delhi', 'India');
INSERT 0 1
postgres=# insert into CRICKETERS values('Jonathan', 'Trott', 38, 'CapeTown', 'SouthAfrica');
INSERT 0 1
postgres=# insert into CRICKETERS values('Kumara', 'Sangakkara', 41, 'Matale', 'Srilanka');
INSERT 0 1
postgres=# insert into CRICKETERS values('Virat', 'Kohli', 30, 'Delhi', 'India');
INSERT 0 1
postgres=# insert into CRICKETERS values('Rohit', 'Sharma', 32, 'Nagpur', 'India');
INSERT 0 1

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

postgres=# SELECT FIRST_NAME, LAST_NAME, COUNTRY FROM CRICKETERS;
first_name  | last_name  | country
------------+------------+-------------
Shikhar     | Dhawan     | India
Jonathan    | Trott      | SouthAfrica
Kumara      | Sangakkara | Srilanka
Virat       | Kohli      | India
Rohit       | Sharma     | India
(5 rows)

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

postgres=# SELECT * FROM CRICKETERS;
first_name  | last_name  | age | place_of_birth | 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
(5 rows)
postgres=#

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 des données depuis PostgreSQL en utilisant la méthode fetch () fournie par le psycopg2.

La classe 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 l'exécutons après avoir récupéré quelques lignes, cela 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

Le programme Python suivant se connecte à une base de données nommée mydb de PostgreSQL et récupère tous les enregistrements d'une table nommée EMPLOYEE.

import psycopg2

#establishing the connection
conn = psycopg2.connect(
   database="mydb", user='postgres', password='password', host='127.0.0.1', port= '5432'
)

#Setting auto commit false
conn.autocommit = True

#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)]