Bases de Datos en PostgreSQL
PostgreSQL es una de las bases de datos relacionales más avanzadas y robustas, conocida por su capacidad de manejo de datos complejos y cumplimiento estricto de los estándares SQL. Es ideal para proyectos que requieren transacciones complejas, extensibilidad y consistencia.
Conceptos Clave
ACID: Garantiza la confiabilidad de las transacciones.
Extensibilidad: Admite tipos de datos personalizados y funciones definidas por el usuario.
Consultas avanzadas: Optimiza las consultas complejas.
Open Source: Altamente personalizable y gratuito.
Integridad: Gestión avanzada de claves foráneas y restricciones.
Configuración de PostgreSQL con Docker
Instrucciones
Crear un contenedor de PostgreSQL con Docker:
Ejecuta el siguiente comando para iniciar un servidor PostgreSQL en Docker.
docker run --name postgres-database -e POSTGRES_PASSWORD=root -e POSTGRES_DB=tienda -p 5432:5432 -d postgres:15
Parámetros:
- –name: Nombre del contenedor.
- POSTGRES_PASSWORDx: Contraseña para el usuario postgres.
- POSTGRES_DB: Nombre de la base de datos inicial.
- -p 5432:5432: Mapea el puerto del contenedor al puerto local.
- postgres:15: Imagen oficial de PostgreSQL.
Acceder al contenedor (opcional):
docker exec -it postgres-database psql -U postgres
Ejemplos
Ejemplo 1: Conexión a PostgreSQL desde Python
import psycopg2
= psycopg2.connect(
conexion ="localhost",
host="tienda",
database="postgres",
user="root"
password
)
if conexion:
print("Conexión exitosa a PostgreSQL")
conexion.close()
En el ejemplo anterior, se establece una conexión a la base de datos PostgreSQL llamada tienda con el usuario postgres y la contraseña root.
Ejemplo 2: Crear una tabla
{fig-align=“center” width=“800}
= psycopg2.connect(
conexion ="localhost",
host="tienda",
database="postgres",
user="root"
password
)= conexion.cursor()
cursor """
cursor.execute(CREATE TABLE IF NOT EXISTS productos (
id SERIAL PRIMARY KEY,
nombre VARCHAR(255) NOT NULL,
precio NUMERIC(10, 2) NOT NULL
)
""")
conexion.commit() conexion.close()
En este caso, se crea una tabla productos con columnas para id, nombre y precio.
Ejemplo 3: Insertar datos
= psycopg2.connect(
conexion ="localhost",
host="tienda",
database="postgres",
user="root"
password
)= conexion.cursor()
cursor "INSERT INTO productos (nombre, precio) VALUES (%s, %s)", ("Monitor", 299.99))
cursor.execute(
conexion.commit() conexion.close()
En este caso, se inserta un nuevo producto en la tabla productos con nombre “Monitor” y precio 299.99.
Ejemplo 4: Consultar datos
= psycopg2.connect(
conexion ="localhost",
host="tienda",
database="postgres",
user="root"
password
)= conexion.cursor()
cursor "SELECT * FROM productos")
cursor.execute(for fila in cursor.fetchall():
print(fila)
conexion.close()
La consulta SELECT * FROM productos recupera todos los registros de la tabla productos y los imprime en pantalla.
Ejemplo Práctico
Objetivo: Administrar una base de datos PostgreSQL usando Python para crear, listar y eliminar productos.
Descripción: El ejemplo incluye la configuración del contenedor Docker y el código Python para interactuar con PostgreSQL.
Instrucciones:
Configura un contenedor PostgreSQL usando Docker.
Crea una tabla productos en la base de datos tienda.
Implementa funciones para agregar, listar y eliminar productos desde Python.
Posible solución
Código:
import psycopg2
def conectar():
return psycopg2.connect(
="localhost",
host="tienda",
database="postgres",
user="root"
password
)
def crear_tabla():
= conectar()
conexion = conexion.cursor()
cursor """
cursor.execute( CREATE TABLE IF NOT EXISTS productos (
id SERIAL PRIMARY KEY,
nombre VARCHAR(255) NOT NULL,
precio NUMERIC(10, 2) NOT NULL
)
""")
conexion.commit()
conexion.close()
def agregar_producto(nombre, precio):
= conectar()
conexion = conexion.cursor()
cursor "INSERT INTO productos (nombre, precio) VALUES (%s, %s)", (nombre, precio))
cursor.execute(
conexion.commit()
conexion.close()
def listar_productos():
= conectar()
conexion = conexion.cursor()
cursor "SELECT * FROM productos")
cursor.execute(for fila in cursor.fetchall():
print(fila)
conexion.close()
def eliminar_producto(id_producto):
= conectar()
conexion = conexion.cursor()
cursor "DELETE FROM productos WHERE id = %s", (id_producto,))
cursor.execute(
conexion.commit()
conexion.close()
# Uso
crear_tabla()"Laptop", 1299.99)
agregar_producto("Auriculares", 79.99)
agregar_producto(print("Productos registrados:")
listar_productos()1)
eliminar_producto(print("Productos después de eliminar:")
listar_productos()
Conclusiones
PostgreSQL es una base de datos potente y versátil que ofrece una amplia gama de funcionalidades para el manejo de datos. Su capacidad de extensibilidad y cumplimiento de los estándares SQL la convierten en una excelente opción para proyectos de cualquier tamaño y complejidad.