Python PostgreSQL - Seleccionar datos

Puede recuperar el contenido de una tabla existente en PostgreSQL utilizando la instrucción SELECT. En esta declaración, debe especificar el nombre de la tabla y devuelve su contenido en formato tabular que se conoce como conjunto de resultados.

Sintaxis

A continuación se muestra la sintaxis de la instrucción SELECT en PostgreSQL:

SELECT column1, column2, columnN FROM table_name;

Ejemplo

Supongamos que hemos creado una tabla con el nombre CRICKETERS utilizando la siguiente consulta:

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=#

Y si hemos insertado 5 registros usando instrucciones INSERT como:

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 siguiente consulta SELECT recupera los valores de las columnas FIRST_NAME, LAST_NAME y COUNTRY de la tabla 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 desea recuperar todas las columnas de cada registro, debe reemplazar los nombres de las columnas con "*" como se muestra a continuación:

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=#

Recuperando datos usando Python

READ Operar en cualquier base de datos significa obtener información útil de la base de datos. Puede obtener datos de PostgreSQL utilizando el método fetch () proporcionado por psycopg2.

La clase Cursor proporciona tres métodos, a saber, fetchall (), fetchmany () y fetchone () donde,

  • El método fetchall () recupera todas las filas del conjunto de resultados de una consulta y las devuelve como una lista de tuplas. (Si ejecutamos esto después de recuperar algunas filas, devuelve las restantes).

  • El método fetchone () busca la siguiente fila en el resultado de una consulta y la devuelve como una tupla.

  • El método fetchmany () es similar al fetchone () pero recupera el siguiente conjunto de filas en el conjunto de resultados de una consulta, en lugar de una sola fila.

Note - Un conjunto de resultados es un objeto que se devuelve cuando se utiliza un objeto de cursor para consultar una tabla.

Ejemplo

El siguiente programa Python se conecta a una base de datos llamada mydb de PostgreSQL y recupera todos los registros de una tabla llamada 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()

Salida

('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)]