PostgreSQL Python: consulta de datos

En este artículo, veremos cómo usar PostSQL usando pyscopg2 en Python para ejecutar datos de consulta.

Estableciendo una conexión al servidor PostgreSQL usando Python:

Para establecer una conexión con el servidor PostgreSQL, haremos uso de la biblioteca pscopg2 en python. Puede instalar psycopg2 usando el siguiente comando:

pip install psycopg2

Si el comando anterior provoca un error, utilice el comando:

pip uninstall psycopg2
pip install psycopg2-binary

Después de instalar la biblioteca, se puede usar el siguiente código para crear una conexión con el servidor de la base de datos:

Python

import psycopg2
  
def get_connection():
    try:
        return psycopg2.connect(
            database="postgres",
            user="postgres",
            password="password",
            host="127.0.0.1",
            port=5432,
        )
    except:
        return False
  
conn = get_connection()
  
if conn:
    print("Connection to the PostgreSQL established successfully.")
else:
    print("Connection to the PostgreSQL encountered and error.")

Producción:

Connection to the PostgreSQL established successfully.

Ejecutar el código anterior producirá el siguiente resultado si las credenciales de la base de datos proporcionadas son correctas y la conexión se establece correctamente:

Consulta de datos usando psycopg2

Veamos cómo podemos consultar datos usando la biblioteca psycopg2.

Ejecutar la consulta SQL sin formato

Ejecute la siguiente consulta SQL para preparar los datos en nuestra tabla para consultar datos de:

En el resultado anterior, podemos ver que hay 5 registros presentes en la tabla de estudiantes . Haremos uso de estos registros para ver cómo podemos consultar datos de una tabla de base de datos.

Ejemplo 1: consulta de datos mediante fetchall()

Python

# This program uses fetchall()
# to query all the records from a table
  
# GET THE CONNECTION OBJECT
conn = get_connection()
  
# CREATE A CURSOR USING THE CONNECTION OBJECT
curr = conn.cursor()
  
# EXECUTE THE SQL QUERY
curr.execute("SELECT * FROM students;")
  
# FETCH ALL THE ROWS FROM THE CURSOR
data = curr.fetchall()
  
# PRINT THE RECORDS
for row in data:
    print(row)
  
# CLOSE THE CONNECTION
conn.close()

Producción:

Salida para fetchall()

En el código anterior, creamos una conexión y una consulta usando SELECT * FROM Students que obtiene el volcado completo de la tabla de estudiantes. Para consultar datos en el código python, podemos hacer uso de fetchall(). El método fetchall() recupera todos los registros que obtuvimos de nuestra consulta SQL (la consulta SELECT en este caso) y los proporciona en una lista. La lista consta de tuplas donde cada tupla consta de todos los valores de columna presentes en el registro o fila en particular.

Ejemplo 2: consulta de datos mediante fetchone()

Python

# This program uses fetchone() to
# query one by one record from a table
  
# GET THE CONNECTION OBJECT
conn = get_connection()
  
# CREATE A CURSOR USING THE CONNECTION OBJECT
curr = conn.cursor()
  
# EXECUTE THE SQL QUERY
curr.execute("SELECT * FROM students;")
  
# FETCH THE FIRST ROW FROM THE CURSOR
data1 = curr.fetchone()
print(data1)
  
# FETCH THE SECOND ROW FROM THE CURSOR
data2 = curr.fetchone()
print(data2)
  
# CLOSE THE CONNECTION
conn.close()

Producción:

Salida para fetchone()

El método fetchone() no debe confundirse con la idea de que solo consulta la primera fila. El método fetchone() devuelve el primer registro del volcado que obtuvimos de la consulta SQL presente en el método curr.execute() . Se comporta como una cola en la que consultamos el primer registro y luego se elimina del objeto del cursor. Ahora, si tratamos de usar el método fetchone() nuevamente, devolverá el siguiente registro. El código anterior demuestra lo mismo donde obtuvimos el primer registro y luego usamos el método fetchone() nuevamente para obtener el siguiente registro en la cola. Podemos seguir haciendo esto hasta llegar al último registro en el objeto cursor.

Ejemplo 3: consulta de datos mediante fetchmany()

Python

# This program uses fetchmany() 
# to query specified number of records from a table
  
# GET THE CONNECTION OBJECT
conn = get_connection()
  
# CREATE A CURSOR USING THE CONNECTION OBJECT
curr = conn.cursor()
  
# EXECUTE THE SQL QUERY
curr.execute("SELECT * FROM students;")
  
print("First two records:")
  
# GET FIRST TWO RECORDS FROM DATABASE TABLE
data1 = curr.fetchmany(2)
for row in data1:
    print(row)
  
print("Next three records:")
  
# GET NEXT THREE RECORDS FROM DATABASE TABLE
data2 = curr.fetchmany(3)
for row in data2:
    print(row)
  
# CLOSE THE CONNECTION
conn.close()

Producción:

Salida para fetchmany()

Hemos visto cómo consultar todos los registros y consultar registros uno por uno. El método fetchmany() toma el no. de registros que queremos obtener de todo el volcado. También se comporta como una cola como vimos en el método fetchone() , excepto por el hecho de que puede obtener más de un registro a la vez. Sin embargo, usar fetchmany(1) es equivalente a usar el método fetchone() . En el código anterior, usamos fetchmany(2) para consultar los primeros dos registros y luego usamos fetchmany(3) para consultar los siguientes 3 registros. Lo mismo se puede notar en la siguiente salida.

Publicación traducida automáticamente

Artículo escrito por apathak092 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *