Skip to content

Registros con Postgresql y Python

Gabriel Hidalgo edited this page May 23, 2023 · 5 revisions

Descripción

Este proyecto tiene como objetivo mostrar ejemplos de código utilizando Python y la biblioteca psycopg2 para interactuar con una base de datos PostgreSQL. A continuación, se presentan diferentes ejercicios que cubren consultas, inserciones, actualizaciones y eliminaciones de registros en la base de datos.

Ejercicios

Ejercicio 5.1: Uso de with y psycopg2

Ejercicio 5.1: Uso de with y psycopg2 Este ejercicio muestra cómo utilizar la sentencia "with" junto con la biblioteca psycopg2 para conectarse a una base de datos PostgreSQL y ejecutar consultas.

import psycopg2`

`conexion = psycopg2.connect(user='postgres',password='Admin',host='127.0.0.1',port='5432',database='Test_bd')`
`try:`
    `with conexion:`
        `with conexion.cursor() as cursor:`
            `sentencia = 'SELECT * FROM persona WHERE id_persona = %s' # Placeholder`
            `id_persona = input('Digite un número para el id persona: ')`
            `cursor.execute(sentencia,(id_persona,))`
            `registros = cursor.fetchone()`
            `print(registros)`
`except Exception as e:`
    `print(f'Ocurrió un error: {e}')`
`finally:`
    `conexion.close()

Ejercicio 5.2: Función fetchone en psycopg2

En este ejercicio, aprenderás cómo utilizar la función fetchone de psycopg2 para recuperar un solo registro de la base de datos:

import psycopg2`

`conexion = psycopg2.connect(user='postgres',password='Admin',host='127.0.0.1',port='5432',database='Test_bd')`
`try:`
    `with conexion:`
        `with conexion.cursor() as cursor:`
            `sentencia = 'SELECT * FROM persona WHERE id_persona = %s' # Placeholder`
            `id_persona = input('Digite un número para el id persona: ')`
            `cursor.execute(sentencia,(id_persona,))`
            `registros = cursor.fetchone()`
            `print(registros)`
`except Exception as e:`
    `print(f'Ocurrió un error: {e}')`
`finally:`
    `conexion.close()`

Ejercicio 5.3: Función fetchall en psycopg2 Parte 1

Este ejercicio muestra cómo utilizar la función fetchall de psycopg2 para recuperar varios registros de la base de datos:

`import psycopg2`

`conexion = psycopg2.connect(user='postgres',password='Admin',host='127.0.0.1',port='5432',database='Test_bd')`
`try:`
    `with conexion:`
        `with conexion.cursor() as cursor:`
            `sentencia = 'SELECT * FROM persona WHERE id_persona IN (1,2)' # Placeholder`
            `id_persona = input('Digite un número para el id persona: ')`
            `cursor.execute(sentencia,(id_persona,))`
            `registros = cursor.fetchall()`
            `for registro in registros:`
                `print(registro)`
`except Exception as e:`
    `print(f'Ocurrió un error: {e}')`
`finally:`
    `conexion.close()`

Ejercicio 5.3: Función fetchall en psycopg2 Parte 2

Este ejercicio muestra cómo utilizar la función fetchall de psycopg2 para recuperar varios registros de la base de datos:

import psycopg2



conexion = psycopg2.connect(user='postgres',password='Admin',host='127.0.0.1',port='5432',database='Test_bd')
try:
    with conexion:
        with conexion.cursor() as cursor:
              sentencia = 'SELECT * FROM persona WHERE id_persona IN %s ' #place holder
              entrada = input('Digite los_persona a buscar (separados por coma):')
              llaves_primarias = (tuple(entrada.split(',')),)

              cursor.execute(sentencia,(llaves_primarias,)) # se ejecuta la sentencia
              registros = cursor.fetchall() # recupera todos los registros
              print(registros)
except Exception as e:

Ejercicio 5.4: Insertar un registro con psycopg2

En este ejercicio, aprenderás cómo insertar un nuevo registro en la base de datos utilizando la biblioteca psycopg2.

import psycopg2

conexion = psycopg2.connect(user='postgres',password='Admin',host='127.0.0.1',port='5432',database='Test_bd')
try:
    with conexion:
        with conexion.cursor() as cursor:
            sentencia = 'INSERT INTO persona(nombre, apellido, email) VALUES(%s, %s, %s)'
            nombre = input('Digite el nombre: ')
            apellido = input('Digite el apellido: ')
            email = input('Digite el correo electrónico: ')
            valores = (nombre, apellido, email)
            cursor.execute(sentencia, valores)
            conexion.commit()
            print('Registro insertado correctamente.')
except Exception as e:
    print(f'Ocurrió un error: {e}')
finally:
    conexion.close()

Ejercicio 5.5: Insertar varios registros

Este ejercicio muestra cómo insertar múltiples registros en la base de datos utilizando la función executemany de psycopg2.

import psycopg2  # Esto es para poder conectarnos a base de datos Postgre (Se abrio y se cerro)

conexion = psycopg2.connect(user='postgres', password='us00', host='127.0.0.1', port='5432', database='test_bd')
try:
    with conexion:
        with conexion.cursor() as cursor:
            sentencia = 'INSERT INTO persona (nombre, apellido, email) VALUES (%s, %s, %s)'  # PLACEHOLDER
            valores = (
                ('Carlos', 'Lara', 'clara@mail.com'),
                ('Marcos', 'Canto', 'mcanto@mail.com'),
                ('Marcelo', 'Cuenca', 'cuencaM@mail.com')
            )  # Es una tupla de tuplas
            cursor.executemany(sentencia, valores)                 # De esta manera ejecutamos la sentencia
            # conexion.commit() esto se utiliza para guardar los cambios en la base de datos (en este caso no, porque utilizamos "with")
            registros_insertados = cursor.rowcount                     # Recuperamos todos los registros que serán una lista
            print(f'Los registros insertados son: {registros_insertados}')


except Exception as e:
    print(f'Ocurrió un error: {e}')
finally:
    conexion.close()


Ejercicio 5.6 Actualizar o modificar un registro

En este ejercicio, aprenderás cómo actualizar un registro existente en la base de datos utilizando la biblioteca psycopg2:

import psycopg2  # Esto es para poder conectarnos a Postgre

conexion = psycopg2.connect(user='postgres', password='us00', host='127.0.0.1', port='5432', database='test_bd')
try:
    with conexion:
        with conexion.cursor() as cursor:
            sentencia = 'UPDATE persona SET nombre=%s, apellido=%s, email=%s WHERE id_persona=%s'  # Placeholder
            valores = ('Juan Carlos', 'Roldan', 'rcarlos@mail.com', 1)  # Es una tupla
            cursor.execute(sentencia, valores) # De esta manera ejecutamos la sentencia
            registros_actualizados = cursor.rowcount # Recuperamos todos los registros que serán una lista
            print(f'Los registros actualizados son: {registros_actualizados}')
            
except Exception as e:
    print(f'Ocurrió un error: {e}')
finally:
    conexion.close()

Ejercicio 5.7: Actualizar o modificar varios registros

Este ejercicio muestra cómo actualizar varios registros en la base de datos utilizando la función executemany de psycopg2:

import psycopg2  # Esto es para poder conectarnos a Postgre

conexion = psycopg2.connect(user='postgres', password='us00', host='127.0.0.1', port='5432', database='test_bd')
try:
    with conexion:
        with conexion.cursor() as cursor:
            sentencia = 'UPDATE persona SET nombre=%s, apellido=%s, email=%s WHERE id_persona=%s'  # Placeholder
            valores = (
                ('Juan', 'Perez', 'jperez@mail.com', 4),
                ('Romina','Ayala','alarar@gmail.com',5)
            ) # Es una tupla de tuplas
            cursor.executemany(sentencia, valores)  # De esta manera ejecutamos la sentencia
            registros_actualizados = cursor.rowcount  # Recuperamos todos los registros que serán una lista
            print(f'Los registros actualizados son: {registros_actualizados}')

except Exception as e:
    print(f'Ocurrió un error: {e}')
finally:
    conexion.close()

Ejercicio 5.8 Eliminar un registro

import psycopg2  # Esto es para poder conectarnos a Postgre

conexion = psycopg2.connect(user='postgres', password='us00', host='127.0.0.1', port='5432', database='test_bd')
try:
    with conexion:
        with conexion.cursor() as cursor:
            sentencia = 'DELETE FROM persona WHERE id_persona=%s'
            entrada = input('Digite el numero de registros a eliminar: ')
            valores = (entrada,) # Es una tupla de valores
            cursor.execute(sentencia, valores)  # De esta manera ejecutamos la sentencia
            registros_eliminados = cursor.rowcount
            print(f'Los registros eliminados son: {registros_eliminados}')

except Exception as e:
    print(f'Ocurrió un error: {e}')
finally:
    conexion.close()

Ejercicio 5.9: Eliminar varios registros

Este ejercicio muestra cómo eliminar varios registros de la base de datos utilizando la función executemany de psycopg2:

import psycopg2

conexion = psycopg2.connect(user='postgres',password='Admin',host='127.0.0.1',port='5432',database='Test_bd')
try:
    with conexion:
        with conexion.cursor() as cursor:
            sentencia = 'DELETE FROM persona WHERE id_persona = %s'
            registros = [(1,), (2,), (3,)]
            cursor.executemany(sentencia, registros)
            conexion.commit()
            print('Registros eliminados correctamente.')
except Exception as e:
    print(f'Ocurrió un error: {e}')
finally:
    conexion.close()

Clone this wiki locally