Skip to content

PostgreSQL y psycopg2

arpincheira edited this page Oct 7, 2020 · 2 revisions

Instalación de PostgreSQL

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.

Probando PostgreSQL

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.

Instalación de psycopg2

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

Probando que todo funciona bien!

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.

Problemas al conectarse a la base de datos?

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.