Partimos de ya tener instalado Python y usar Visual Studio Code en Windows 10.
- Instalar postgresql desde su web con el instalador.
- En Visual Studio Code deberemos poner en la terminal pip install psycopg2 y de este modo instalar el conectar con la base de datos.
* Creamos la base de datos:
abrimos pgAdmin 4, (clic en el menú inicio, escribir pgadmin y saldrá el programa, le hacemos clic).
clic derecho en Databases, create, Database y darle un nombre que usaremos en python.
darle un nombre
* Crear la tabla y las columnas:
Clic derecho sobre la base de datos, clic en Query Tool, escribir el código según lo necesitemos, clic en play. Ver el resultado en la parte inferior.

codigo, nombre y documento serán las columnas
create table misdatos(
codigo serial,
nombre varchar(50),
documento integer,
primary key (codigo)
)
los tipos de datos pueden ser ( integer , char , varchar , float )
varchar: caracteres y debemos especificar cuantos.
integer: números enteros.
char: caracter.
float: real.
en PYTHON:
En las primeras líneas, para todo, irá lo siguiente:
import psycopg2
#llamamos a la funcion conect y le pasamos los datos:
conexion1 = psycopg2.connect(database="misdatos", user="postgres", password="contraseñaaqui")
#llamamos objeto clase cursor
var1=conexion1.cursor()
una vez definida la conexión con la base da datos, pasarmeos a realizar las diferentes acciones:
* Guardar información:
sql = "insert into misdatos(nombre, documento) values (%s,%s)"
datos = ("Joaquin",123456)
var1.execute(sql,datos)
conexion1.commit()
conexion1.close()
aunque para hacerlo en una linea principal en vez de 3 sería de la siguiente manera. Hay que aplicar igualmente las máscaras %s
var1.execute("insert into misdatos(nombre, documento) values (%s,%s)",("Jeremias",45678))
conexion1.commit()
conexion1.close()
Sobre commit y close: commit es necesario para que se registren los cambios, close es para cerrar la conexión con la base de datos, si por ejemplo queregmos guardar varios datos, podremos pasarselos a la base de datos y luego ejecutar commit o bien pasar cada dato y ejecutar commit, y por último cerrar la conexión y que si se cierra, deberemos abrirla nuevamente para guardar más datos.
¿Cómo veo la información guardada en la base de datos?
Clic derecho sobre la base de datos, clic en Query Tool, escribir el código
select codigo,nombre,documento from misdatos
¿y desde Python como obtenemos esos datos?
recordar que el encabezado de 3 lineas iba para todo, y agregar lo siguiente:
#pide los datos
var1.execute("select * from misdatos")
#guarda todos los datos:
miregistro=var1.fetchall()
#muestra los datos
print(miregistro)
conexion1.close()
devuelve los datos uno tras otro...
otra opción será
#pide los datos
var1.execute("select * from misdatos")
#guarda todos los datos:
miregistro=var1.fetchall()
#muestra los datos
for fila in miregistro:
print(fila)
conexion1.close()
que devuelve los datos uno debajo del otro por el for
Obtener todos los datos donde el nombre es joaquin:
#pide los datos
var1.execute("select * from misdatos where nombre='Joaquin'")
#guarda todos los datos:
miregistro=var1.fetchall()
#muestra los datos
for fila in miregistro:
print(fila)
conexion1.close()
Resultado:
Obtener datos especídicos (columnas específicas):
var1.execute("select codigo, nombre, dni from misdatos")
o sin codigo por ejemplo
var1.execute("select nombre, documento from misdatos")
for fila in var1:
print(fila)
conexion1.close()
* Borrar datos desde Python:
var1.execute("delete from misdatos where nombre='Joaquin'")
conexion1.commit()
* Actualizar uno o varios datos:
- Actualizar el nombre por jojocho donde el codigo es 3
var1.execute("update misdatos set nombre='jojocho' where codigo=3")
conexion1.commit()
- Actualizar el nombre por jojocho donde el nombre sea igual a juan
#pide los datos
var1.execute("update misdatos set nombre='jojocho' where nombre='juan'")
conexion1.commit()
Notar que si es lo mismo Juan que juan, es decir, la mayúscula es otro caracter.
Operadores lógicos para múltiples condiciones:
- and, significa "y",
- or, significa "y/o",
- not, significa "no", invierte el resultado
- (), paréntesis
Por ejemplo para luego de where
seleccionar todo los documentos que sean 123 o 1234 (ambos) y modificar el nombre por numerito.
var1.execute("update misdatos set nombre='numeritos' where documento=123 or documento=1234")
conexion1.commit()
Se reorganizan en su orden, pero la modificación está
para cuando utilicemos el and, debemos usar paréntesis
...........where (documento=123) and (nombre='numeritos')
pasemos a otro ejemplo:
Crear una base de datos llamada "alumnos", con una tabla "misdatos" que contenga un número de registro, un código de tarjeta, fecha y hora.
create table misdatos(
codigo serial,
codigotarjeta integer,
fecha date,
hora time,
primary key (codigo)
)
cargar los siguientes datos

#llamamos objeto clase cursor
var1=conexion1.cursor()
var1.execute("insert into misdatos(codigotarjeta, fecha, hora) values (%s,%s,%s)",(65432187,'23/05/2022','16:35'))
var1.execute("insert into misdatos(codigotarjeta, fecha, hora) values (%s,%s,%s)",(65248,'23/05/2022','16:40'))
var1.execute("insert into misdatos(codigotarjeta, fecha, hora) values (%s,%s,%s)",(546546,'24/05/2022','17:00'))
var1.execute("insert into misdatos(codigotarjeta, fecha, hora) values (%s,%s,%s)",(211651,'24/05/2022','10:00'))
var1.execute("insert into misdatos(codigotarjeta, fecha, hora) values (%s,%s,%s)",(1541651,'01/05/2019','23:00'))
var1.execute("insert into misdatos(codigotarjeta, fecha, hora) values (%s,%s,%s)",(5654564,'01/05/2017','16:10'))
var1.execute("insert into misdatos(codigotarjeta, fecha, hora) values (%s,%s,%s)",(516546,'15/05/2017','16:30'))
var1.execute("insert into misdatos(codigotarjeta, fecha, hora) values (%s,%s,%s)",(89848,'25/05/2022','15:40'))
var1.execute("insert into misdatos(codigotarjeta, fecha, hora) values (%s,%s,%s)",(5498498,'26/05/2022','12:00'))
conexion1.commit()
conexion1.close()
verlo en la base de datos:
select * from alumnos
he cometido un error en las pruabas, en el año, así que verán todo como 2022 en el ejemplo anterior, y hay valores repetido, pero ya lo corregí, simplemente eliminé la tabla, y la cree nuevamente, seguido cargué los datos correctamente.
Para leerlo en python podremos utilizar el for, es super sencillo, tenemos una lista de números, luego el for irá recorriendo la lista e imprimiendo en pantalla el valor.
lista1 = [5, 6, 7, 100]
for n in lista1:
print(n)
Resultado en consola:
5
6
7
100
Obtener los datos entre 2 fechas específicas:
var1.execute("select codigo, codigotarjeta, fecha, hora from misdatos where (fecha>'23/05/2022') and (fecha<'25/05/2022')")
miregistro=var1.fetchall()
#muestra los datos
for fila in miregistro:
print(fila)
conexion1.close()
Fuentes:
https://youtu.be/tJNuYXf_n-k
https://www.tutorialesprogramacionya.com/pythonya/