-
Notifications
You must be signed in to change notification settings - Fork 27
PostgreSQL y psycopg2
PostgreSQL es un sistema de bases de datos, al igual que SQLite3. La principal ventaja de Postgres sobre SQLite 3, es su integración con Python3 mediante la librería psycopg2.
Afortunadamente, existen muchos tutoriales en internet para instalar Postgres en todos los sistemas operativos:
Nota 1: En algún momento se les pedirá crear una contraseña de superusuario para postgres. Es importante que guarden la contraseña para el futuro.
Nota 2: Se les recomienda fuertemente que ocupen el puerto por defecto en la instalación de postgres. Si saben lo que están haciendo, y saben que ese puerto está siendo ocupado por otro servicio, pueden cambiarlo pero deben recordar el puerto que asignaron a Postgres.
- Windows: Instrucciones de Instalación
- MacOS postgres.app: Instrucciones de Instalación
- Ubuntu/Linux: Instrucciones de Instalación
Una vez que tenemos postgres instalado, y tenemos el servicio de postgres corriendo, podemos hacer algunas pruebas! Primero crearemos una base de datos donde haremos nuestras pruebas, para esto, ejecutamos el siguiente comando en nuestra consola favorita:
createdb exampleDB
Con este comando, le estamos diciendo a postgres que cree una base de datos con el nombre "exampleDB"
Si todo está bien, no debería haber lanzado ningun tipo de error en la consola.
Ahora nos conectaremos a la base de datos que creamos con el siguiente comando:
psql exampleDB
Si ahora nuestra consola se ve de la siguiente forma:
exampleDB=#
Significa que ya estamos dentro!
Para las siguientes pruebas vamos a utilizar una pequeña base de datos de películas, por lo que vamos a crear la tabla Peliculas en nuestra base de datos:
CREATE TABLE Peliculas (titulo varchar(255), estreno int);
El punto y coma del final es muy importante, si no lo ponemos Postgres no tiene como saber que nuestra consulta ha terminado.
La forma que Postgres tiene de decirnos que todo salió bien, es repetir la acción que le entregamos en la consulta, en este caso, deberíamos ver esto:
exampleDB=# CREATE TABLE Peliculas (titulo varchar(255), estreno int);
CREATE TABLE
Creamos una tabla en Postgres! Ahora solo debemos poblarla con datos. Esto lo haremos mediante un script de Python con psycopg2.
Pueden salir de la consola de postgres escribiendo \q
y aprentando enter.
Ahora que ya tenemos Postgres instalado, tenemos que instalar la librería de Python que nos permitirá hacer consultas a una base de datos de Postgres desde un script de Python.
Para instalar psycopg2 debemos correr el siguiente comando:
python3 -m pip install psycopg2
Es probable que en algunos sistemas, Python3 se acceda con el comando python
en lugar de python3
Para probar que psycopg2 se puede conectar a nuestro servidor local de postgres, ejecutaremos el siguiente código en python.
Es muy importante que en el objeto Psycopg2.Connect rellenen con los datos que correspondan a su computador:
conn = psycopg2.connect(
database='exampleDB',
user='NOMBRE DE USUARIO DE SU COMPUTADOR',
host='localhost',
port=5432,
password=''
)
Solo es necesario el atributo password
cuando protegen su base de datos con una clave, por defecto no tienen clave, asi que deberian dejarlo como un string vacío solamente.
Ahora ejecutamos el siguiente código en nuestro computador, pueden copiar el código siguiente en un archivo .py y ejecutarlo, o descargarlo desde aqui
import psycopg2
try:
conn = psycopg2.connect(
database='exampleDB',
user='user',
host='localhost',
port=5432,
password=''
)
# Obtenemos un cursor
cursor1 = conn.cursor()
#Definimos los nuevos datos que vamos a ingresar
peliculas = [
("El Padrino", 1972),
("Batman: El caballero de la noche", 2008),
("Pulp Fiction", 1994)
]
#Definimos el cuerpo de la consulta
query = "INSERT INTO Peliculas VALUES ('{nombre}', {estreno});"
for nombre, estreno in peliculas:
cursor1.execute(query.format(nombre=nombre, estreno=estreno))
# Guardamos los cambios
conn.commit()
# Cerramos el cursor
cursor1.close()
#Obtenemos un cursor con el que ejecutamos las consultas
cursor2 = conn.cursor()
cursor2.execute("SELECT * FROM Peliculas")
row = cursor2.fetchone()
while row:
print(row)
row = cursor2.fetchone()
cursor2.close()
# MUY IMPORTANTE
conn.close()
except Exception as e:
print('Hubo un problema :c')
print(e)
Si todo funcionó bien, se imprimirán en consola las películas que agregamos a la base de datos!
Podemos comprobar que realmente se agregaron entrando a nuestra consola de postgres
psql exampleDB
Y hacemos la siguiente consulta:
SELECT * FROM Peliculas;
Donde veremos todas las películas que agregamos mediante Python.
En el caso de que tengas algún problema de conexión te invitamos a visitar la siguiente página y en el caso de que tu error no se encuentre aquí, te invitamos a que envíes una issue para que el equipo docente te pueda ayudar.