Python – Conexión a base de datos PostgreSQL

Antes de comenzar una conexión a una base de datos PostgreSQL en Python, se debe importar el conector MySQL. En nuestros ejemplos, usaremos Visual Studio Code, que es uno de los editores más poderosos y ampliamente utilizados para desarrollar en Python.

» Más ejemplos de Python

Generar proyecto en Visual Studio Code (VSC)

Comenzaremos generando una carpeta nueva con el nombre de ejemplo «ConexionPostgreSQL». Dentro de la terminal de VSC ejecutaremos los siguientes comandos para crear y activar el entorno virtual en python3.

Crear entorno virtual:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
virtualenv -p python3 env
virtualenv -p python3 env
virtualenv -p python3 env

Si se ejecutó correctamente, notaremos que se generó una carpeta nueva con el nombre de «env».

Activar entorno virtual:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
source env/bin/activate
source env/bin/activate
source env/bin/activate

Notaremos que se ha activado cuando aparezca (env) en el prompt al inicio de nuestro nombre de usuario, algo como lo siguiente:
(env) decodigo@decodigo:~/Documentos/python/ConexionPostgreSQL$

Instalar controladores

Antes de instalar los controles necesarios, debemos crear una carpeta nueva con el nombre «src» y dentro de ella generar el archivo «conexion_postgresql.py».

Después, en la terminal de VSC con el entorno activado, ejecutaremos los siguientes comandos para instalar los conectores necesarios:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
pip install psycopg2
pip install psycopg2
pip install psycopg2

Si obtuviste un error como: ERROR: Failed building wheel for psycopg2, puedes solucionarlo ejecutando el siguiente comando y probando nuevamente:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
sudo apt-get install gcc libpq-dev python3-dev
sudo apt-get install gcc libpq-dev python3-dev
sudo apt-get install gcc libpq-dev python3-dev

Puedes comprobar que se haya instalado de forma correcta con el siguiente comando:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
pip list
pip list
pip list
Package        Version
----------------     -----------
pip                   22.0.2
psycopg         2 2.9.5
setuptools     59.6.0
wheel              0.37.1

Finalmente agregamos el código, recuerda que los parámetros cambian dependiendo del usuario, contraseña y base de datos que usarás.

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
import psycopg2
# decodigo.com
try:
connection=psycopg2.connect(
host='localhost',
user='usuario',
password='password',
database='base_datos',
)
print("Consulta exitosa")
cursor=connection.cursor()
cursor.execute("SELECT * FROM usuarios")
rows=cursor.fetchall()
for row in rows:
print(row)
except Exception as ex:
print(ex)
finally:
connection.close()
print("Conexion terminada.")
import psycopg2 # decodigo.com try: connection=psycopg2.connect( host='localhost', user='usuario', password='password', database='base_datos', ) print("Consulta exitosa") cursor=connection.cursor() cursor.execute("SELECT * FROM usuarios") rows=cursor.fetchall() for row in rows: print(row) except Exception as ex: print(ex) finally: connection.close() print("Conexion terminada.")
import psycopg2

# decodigo.com

try:
    connection=psycopg2.connect(
        host='localhost',
        user='usuario',
        password='password',
        database='base_datos',
    )

    print("Consulta exitosa")
    cursor=connection.cursor()
    cursor.execute("SELECT * FROM usuarios")
    rows=cursor.fetchall()
    for row in rows:
        print(row)
except Exception as ex:
    print(ex)
finally:
    connection.close()
    print("Conexion terminada.")
Conexión a base de datos PostgreSQL

Configuración de la base de datos

Para configurar la base de datos necesitaremos acceder a PostgreSQL desde la terminal de Linux con los siguientes comandos:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
sudo su - postgres
sudo su - postgres
sudo su - postgres

Y posteriormente cuando el prompt haya cambiado, ejecutaremos el siguiente código para acceder:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
psql
psql
psql

Generar usuario y base de datos:

Dentro de PostgreSQL crearemos un usuario nuevo para administrar la base de datos, podrás definir el usuario y la contraseña que gustes:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
create user nombre with password 'password';
create user nombre with password 'password';
create user nombre with password 'password';

Después crearemos la base de datos y definimos el usuario que la va a administrar, que es el que creamos anteriormente :

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
create database base_datos with owner nombre;
create database base_datos with owner nombre;
create database base_datos with owner nombre;

Finalmente le damos permisos de super administrador a nuestro usuario nuevo:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
alter user nombre with superuser;
alter user nombre with superuser;
alter user nombre with superuser;

Instalar pgAdmin:

En una nueva terminal de Linux instalaremos el gestor de base de datos pgAdmin con los siguientes comandos:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
sudo apt install curl
sudo apt install curl
sudo apt install curl
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
curl https://www.pgadmin.org/static/packages_pgadmin_org.pub | sudo apt-key add
curl https://www.pgadmin.org/static/packages_pgadmin_org.pub | sudo apt-key add
curl https://www.pgadmin.org/static/packages_pgadmin_org.pub | sudo apt-key add
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
sudo sh -c 'echo "deb https://ftp.postgresql.org/pub/pgadmin/pgadmin4/apt/$(lsb_release -cs) pgadmin4 main" > /etc/apt/sources.list.d/pgadmin4.list && apt update'
sudo sh -c 'echo "deb https://ftp.postgresql.org/pub/pgadmin/pgadmin4/apt/$(lsb_release -cs) pgadmin4 main" > /etc/apt/sources.list.d/pgadmin4.list && apt update'
sudo sh -c 'echo "deb https://ftp.postgresql.org/pub/pgadmin/pgadmin4/apt/$(lsb_release -cs) pgadmin4 main" > /etc/apt/sources.list.d/pgadmin4.list && apt update'

Acceder a la base de datos

Para este ejemplo también utilizaremos la herramienta de administración de bases de datos DBeaber Community , una excelente aplicación de software de cliente SQL .

Comenzaremos generando la conexión nueva, recuerda que la conexión es local, por lo que los únicos campos que serán cambiados son, el nombre de la base de datos y el usuario:

Conexión a base de datos PostgreSQL

Teniendo seleccionada la base de datos, generaremos un nuevo script con la tabla que vamos a trabajar:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
CREATE TABLE Usuarios (
ID SERIAL PRIMARY KEY,
NOMBRE varchar(100) NOT NULL,
CONTRASEÑA varchar(100) NOT NULL
);
CREATE TABLE Usuarios ( ID SERIAL PRIMARY KEY, NOMBRE varchar(100) NOT NULL, CONTRASEÑA varchar(100) NOT NULL );
CREATE TABLE Usuarios (
  ID SERIAL PRIMARY KEY,
  NOMBRE varchar(100) NOT NULL,
  CONTRASEÑA varchar(100) NOT NULL
);

Después agregamos algunos registros de prueba, recuerda que las tablas se almacenan en Schemas y es importante refrescar la información para que se actualice correctamente:

Conexión a base de datos PostgreSQL

Finalmente en VSC teniendo el entorno virtual activo (env) accedemos a la carpeta «src»

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
cd src
cd src
cd src

Y ejecutamos nuestro proyecto

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
python3 conexion_postgresql.py
python3 conexion_postgresql.py
python3 conexion_postgresql.py

Al final, cuando se ejecute el código, obtendremos algo como esto:

Conexión a base de datos PostgreSQL

Esperamos que este ejemplo de como generar la conexión a una base de datos PostgreSQL, te haya sido de gran utilidad.

Más información en inglés: https://geekole.com/connect-to-postgresql-database-in-python/