John Cardozo
Software Engineer
John Cardozo
Python, Postgres, Psycopg2
Verifica la versión de Python instalada
python3 ––version
Actualizar la lista de repositorios
sudo apt update
Instalar Personal Package Archive (PPA)
sudo apt install software-properties-common
Instalar el PPA Deadsnakes
sudo add-apt-repository ppa:deadsnakes/ppa
Actualizar la lista de repositorios (de nuevo)
sudo apt update
Instalar Python 3.7
sudo apt install python3.7
Instalación - opción 1
pip3 install psycopg2
Muestra los paquetes instalados
pip3 freeze
Psycopg es el adaptador más popular de bases de datos PostgreSQL para Python.
Instalación de PIP3 - Administrador de Paquetes para Python
sudo apt install python3-pip
Instalación en Ubuntu
sudo apt-get install -y python3-psycopg2
pip install psycopg2-binary
Instalación - opción 2
pip install pipwin
pipwin install psycopg2
Instalación en Windows
# Datos de conexión
dc = {
'host': 'localhost',
'database': 'empresa',
'user': 'postgres',
'password': 'qwerty'
}
# Conexión a la base de datos
conexion = psycopg2.connect(**dc)
# Cerrar la conexión
conexion.close()
import psycopg2
Importar la librería psycopg2
Crear la conexión a la base de datos
dc = {
'host': 'localhost',
'database': 'empresa',
'user': 'postgres',
'password': 'qwerty'
}
import psycopg2
from datos_conexion import dc
# Conexión a la base de datos
conexion = psycopg2.connect(**dc)
# Cerrar la conexión
conexion.close()
datos_conexion.py
programa.py
create table empleados(
id serial primary key,
nombres varchar(100) not null,
email varchar(50)
);
Tabla de ejemplo: empleados
id | nombres | |
---|---|---|
1 | john | john@gmail.com |
2 | paul | paul@gmail.com |
3 | george | george@gmail.com |
4 | ringo | ringo@gmail.com |
columnas
filas
conexion = psycopg2.connect(**dc)
Obtener una conexión a la base de datos
cursor = conexion.cursor()
Crear un cursor a partir de la conexión
cursor.execute('select * from empleados')
Ejecutar la cadena SQL en la base de datos
for fila in filas:
# Obtiene las columnas
# id (0) y nombres (1)
id = fila[0]
nombres = fila[1]
# Imprime los datos
print(f'id={id}\tnombres={nombres}')
Recorre las filas obtenidos para obtener el valor de cada columna
cursor.close()
conexion.close()
Cierra el cursor y la conexión a la base de datos
1
2
3
5
6
filas = cursor.fetchall()
Obtiene todas filas
4
import psycopg2
from datos_conexion import dc
# Conexión a la base de datos
conexion = psycopg2.connect(**dc)
# Creación de cursor
cursor = conexion.cursor()
# Ejecución de la sentencia
cursor.execute('select * from empleados')
# Obtiene todas las filas
filas = cursor.fetchall()
# Recorre las filas
for fila in filas:
# Obtiene las columnas id (0) y nombres (1)
id = fila[0]
nombres = fila[1]
# Imprime los datos
print(f'id={id}\tnombres={nombres}')
# Cerrar el cursor
cursor.close()
# Cerrar la conexión
conexion.close()
conexion = psycopg2.connect(**dc)
Obtener una conexión a la base de datos
cursor = conexion.cursor()
Crear un cursor a partir de la conexión
cursor.execute(sql, parametros)
Ejecutar la cadena SQL en la base de datos
for fila in filas:
# Obtiene las columnas
# id (0) y nombres (1)
id = fila[0]
nombres = fila[1]
# Imprime los datos
print(f'id={id}\tnombres={nombres}')
Recorre las filas obtenidas para obtener el valor de cada columna
cursor.close()
conexion.close()
Cierra el cursor y la conexión a la base de datos
1
2
5
7
8
registros = cursor.fetchall()
Obtiene las filas
6
sql = 'select * from empleados where id=%s'
Establece la cadena SQL SELECT a ejecutar
3
parametros = ('1',)
4
Establece los parámetros
import psycopg2
from datos_conexion import dc
# Conexión a la base de datos
conexion = psycopg2.connect(**dc)
# Creación de cursor
cursor = conexion.cursor()
# Cadena SQL
sql = 'select * from empleados where id=%s'
# Establece los parámetros
parametros = ('1',)
# Ejecución de la sentencia
cursor.execute(sql, parametros)
# Obtiene las filas
filas = cursor.fetchall()
# Recorre las filas
for fila in filas:
# Obtiene las columnas id (0) y nombres (1)
id = fila[0]
nombres = fila[1]
# Imprime los datos
print(f'id={id}\tnombres={nombres}')
# Cerrar el cursor
cursor.close()
# Cerrar la conexión
conexion.close()
conexion = psycopg2.connect(**dc)
Obtener una conexión a la base de datos
cursor = conexion.cursor()
Crear un cursor a partir de la conexión
sql = 'insert into empleados(nombres, email) values(%s, %s)'
Crear la cadena SQL INSERT que se va a ejecutar
parametros = ('john', 'john@gmail.com')
Definir los parámetros de la cadena SQL
cursor.execute(sql, parametros)
Ejecutar la cadena SQL en la base de datos
conexion.commit()
Guarda los datos en la base de datos
cursor.close()
conexion.close()
Cierra el cursor y la conexión a la base de datos
1
2
3
6
7
8
5
# Librerias
import psycopg2
from datos_conexion import dc
# Conexión a la base de datos
conexion = psycopg2.connect(**dc)
# Creación de cursor
cursor = conexion.cursor()
# Cadena SQL
sql = 'insert into empleados(nombres, email) values(%s, %s)'
# Parametros de la cadena
parametros = ('john', 'john@gmail.com')
# Ejecución de la sentencia
cursor.execute(sql, parametros)
# Guarda los cambios en la base de datos
conexion.commit()
# Cerrar el cursor
cursor.close()
# Cerrar la conexión
conexion.close()
conexion = psycopg2.connect(**dc)
Obtener una conexión a la base de datos
cursor = conexion.cursor()
Crear un cursor a partir de la conexión
sql = 'update empleados set nombres=%s where id=%s'
Crear la cadena SQL UDATE que se va a ejecutar
parametros = ('paul', 1)
Definir los parámetros de la cadena SQL
cursor.execute(sql, parametros)
Ejecutar la cadena SQL en la base de datos
conexion.commit()
Guarda los datos en la base de datos
cursor.close()
conexion.close()
Cierra el cursor y la conexión a la base de datos
1
2
3
6
7
8
5
import psycopg2
from datos_conexion import dc
# Conexión a la base de datos
conexion = psycopg2.connect(**dc)
# Creación de cursor
cursor = conexion.cursor()
# Cadena SQL
sql = 'update empleados set nombres=%s where id=%s'
# Parametros de la cadena
parametros = ('paul', 1)
# Ejecución de la sentencia
cursor.execute(sql, parametros)
# Guarda los cambios en la base de datos
conexion.commit()
# Cerrar el cursor
cursor.close()
# Cerrar la conexión
conexion.close()
conexion = psycopg2.connect(**dc)
Obtener una conexión a la base de datos
cursor = conexion.cursor()
Crear un cursor a partir de la conexión
sql = 'delete from empleados where id=%s'
Crear la cadena SQL DELETE que se va a ejecutar
parametros = ('3')
Definir los parámetros de la cadena SQL
cursor.execute(sql, parametros)
Ejecutar la cadena SQL en la base de datos
conexion.commit()
Elimina los datos en la base de datos
cursor.close()
conexion.close()
Cierra el cursor y la conexión a la base de datos
1
2
3
6
7
8
5
import psycopg2
from datos_conexion import dc
# Conexión a la base de datos
conexion = psycopg2.connect(**dc)
# Creación de cursor
cursor = conexion.cursor()
# Cadena SQL
sql = 'delete from empleados where id=%s'
# Parametros de la cadena
parametros = ('3')
# Ejecución de la sentencia
cursor.execute(sql, parametros)
# Elimina los datos en la base de datos
conexion.commit()
# Cerrar el cursor
cursor.close()
# Cerrar la conexión
conexion.close()
johncardozo@gmail.com
By John Cardozo
Conexión y operaciones de lectura y escritura desde Python a bases de datos Postgres