python & postgres

John Cardozo

python & postgres

  • Instalación
    • Python
    • Postgres
    • Psycopg2
  • Conexión
  • ​Operaciones
    • Lectura
    • Escritura

AGENDA

instalación

instalación

Python, Postgres, Psycopg2

instalación de python 3 en linux

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 de psycopg2

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

conexión de python a postgres

# 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

  • database: nombre de la base de datos a la cual se va a conectar.
  • user: username de autenticación.
  • password: password de autenticación.
  • host: dirección del servidor de base de datos, puede ser localhost o dirección IP
  • port: puerto del servidor. Por defecto es 5432

datos de conexión en archivo separado

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

tabla de ejemplo

create table empleados(
	id serial primary key,
	nombres varchar(100) not null,
	email varchar(50)
);

Tabla de ejemplo: empleados

id nombres email
1 john john@gmail.com
2 paul paul@gmail.com
3 george george@gmail.com
4 ringo ringo@gmail.com

columnas

filas

select en una tabla

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

código completo de select

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()

select en una tabla con where

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

código completo de select con where

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()

insert en una tabla

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

código completo de insert

# 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()

UPDATE en una tabla

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

código completo de update

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()

delete en una tabla

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

código completo de delete

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()

john cardozo

johncardozo@gmail.com

Python & Postgres

By John Cardozo

Python & Postgres

Conexión y operaciones de lectura y escritura desde Python a bases de datos Postgres

  • 752