🧭 Mini‑proyecto en Python: Menús interactivos con Programación Orientada a Objetos

En este artículo te presento un pequeño proyecto en Python que demuestra, de forma sencilla y práctica, cómo aplicar Programación Orientada a Objetos (POO) para crear un menú interactivo en consola.
El objetivo es que el usuario pueda navegar por distintas categorías del blog y abrir artículos directamente en su navegador.
Es un ejemplo ideal para aprender:

  • Cómo organizar código en clases
  • Cómo crear objetos y métodos
  • Cómo encapsular comportamientos
  • Cómo usar diccionarios para mapear opciones
  • Cómo interactuar con el sistema y el navegador
    Vamos paso a paso.

🧱 ¿Por qué este proyecto es POO?
La Programación Orientada a Objetos se basa en cuatro pilares fundamentales:

  1. Clases
  2. Objetos
  3. Métodos
  4. Encapsulación
    Este proyecto utiliza los cuatro de forma clara y didáctica.

🏗️ 1. Clases: la estructura del programa
El proyecto tiene dos clases principales:

Es la clase encargada de mostrar todos los menús y ejecutar las acciones correspondientes.
Dentro de ella viven métodos como:

  • Cada método representa una pantalla o acción del programa.

    Es la clase que contiene el punto de entrada del programa.
    Su método es el encargado de:
  • Crear un objeto
  • Mostrar el menú principal
  • Leer la opción del usuario
  • Llamar al menú correspondiente

🧩 2. Objetos: instancias que ejecutan acciones
En se crea un objeto:

Ese objeto es el que:

  • Muestra los menús
  • Abre enlaces
  • Gestiona la interacción
    En POO, un objeto es una instancia de una clase, y este proyecto lo utiliza exactamente como debe ser.

🛠️ 3. Métodos: comportamientos del objeto
Cada menú es un método dentro de la clase .
Por ejemplo:

  • abre artículos según el lenguaje elegido
  • abre la categoría de cocina
  • abre la sección de historia
    En POO, los métodos representan acciones que un objeto puede realizar.
    Aquí se ve de forma muy clara.

🔒 4. Encapsulación: organización y claridad
Aunque este proyecto no usa atributos privados, sí encapsula comportamientos dentro de clases.
Esto significa:

  • El código está organizado
  • Cada clase tiene una responsabilidad clara
  • No hay funciones sueltas
  • Todo está agrupado de forma lógica
    Es exactamente lo que busca la POO:
    👉 orden, modularidad y claridad.

📁 Estructura del proyecto

🧠 ¿Qué hace cada archivo?
📌
Contiene la clase , que agrupa todos los menús y acciones.
Es el “cerebro visual” del programa.

  • Muestra el menú principal
  • Permite elegir lenguajes de programación
  • Abre categorías del blog
  • Usa diccionarios para mapear opciones
  • Usa para abrir enlaces
  • Usa para no bloquear la ejecución

📌
Contiene la clase y el método .

  • Crea un objeto
  • Muestra el menú principal
  • Lee la opción del usuario
  • Valida la entrada
  • Llama al menú correspondiente
  • Abre el blog al salir
    Además, utiliza para indicar que no necesita una instancia de la clase.

🎯 Conclusión
Este proyecto es un ejemplo perfecto de Programación Orientada a Objetos aplicada a un caso real:

  • Las clases organizan el código
  • Los objetos ejecutan acciones
  • Los métodos representan comportamientos
  • La encapsulación mantiene todo limpio y modular
    Es sencillo, práctico y útil, ideal para quienes están aprendiendo Python y quieren ver cómo se aplica la POO en un proyecto real.

📝 Nota final del artículo

Crea todo el proyecto dentro de la misma carpeta.
Si colocas los archivos en directorios distintos o cambias su ubicación sin ajustar las rutas, el proyecto no funcionará correctamente.




🧾 Cómo crear un Registro de Personal en Python con JSON (guía didáctica y visual)

La estructura está pensada para que el lector aprenda, disfrute y pueda copiar el código sin miedo.
Aquí la tienes 👇

🧾 Cómo crear un Registro de Personal en Python con JSON (guía didáctica y visual)
En este artículo vamos a construir un pequeño sistema para registrar personas, guardar sus datos en un archivo JSON y buscar empleados por cargo.
Todo desde consola, paso a paso, con código limpio y explicaciones claras.
Ideal para quienes están aprendiendo Python y quieren practicar clases, archivos, JSON y bucles.

🎯 Objetivo del proyecto
Vamos a crear un programa que permita:

  • Registrar personas (nombre, edad, sexo, cargo).
  • Guardarlas en un archivo sin borrar lo anterior.
  • Mostrar los datos guardados.
  • Buscar personas por cargo.
  • Mantener un formato bonito y legible.

🧱 1. La clase
Comenzamos creando una clase que represente a cada persona:

Esta clase nos permite trabajar con objetos, pero también convertirlos a diccionarios para guardarlos en JSON.

📦 2. Guardar datos en un archivo JSON
Creamos una función que:

  1. Carga el archivo si existe.
  2. Si no existe, crea una lista vacía.
  3. Agrega la nueva persona.
  4. Guarda todo con formato bonito.

📝 3. Registrar una persona
Pedimos los datos por consola, creamos el objeto y lo guardamos:

🔍 4. Buscar personas por cargo
Ahora viene la parte interactiva: un pequeño menú para buscar empleados por cargo.

📁 5. ¿Cómo queda el archivo ?
Después de registrar varias personas, el archivo se verá así:

Cada nueva persona se agrega al final sin borrar lo anterior.

🎨 6. Explicación visual (tu toque didáctico)
Imagina el archivo JSON como una estantería de fichas:

Cada vez que registras una persona, simplemente añades una ficha más.
Y cuando buscas por cargo, el programa revisa cada ficha como si dijera:

Hasta encontrar coincidencias.

🧠 7. Qué aprende el lector con este proyecto

  • Uso de clases en Python.
  • Conversión de objetos a diccionarios.
  • Lectura y escritura de archivos JSON.
  • Manejo de errores.
  • Búsquedas dentro de listas.
  • Interacción por consola.
  • Persistencia de datos.
    Un proyecto perfecto para principiantes que quieren dar un salto hacia programas más útiles y reales.

1. Importaciones

import json

import os from os

import system

¿Qué hace cada una?

  • json → permite leer y escribir archivos JSON.
  • os → permite comprobar si un archivo existe.
  • system → permite ejecutar comandos del sistema como pause o cls.

🧱 2. Clase Personal

class Personal: def __init__(self, nombre, edad, sexo, cargo): self.nombre = nombre self.edad = edad self.sexo = sexo self.cargo = cargo

¿Qué es esto?

Es un molde para crear personas.
Cada persona tendrá:

  • nombre
  • edad
  • sexo
  • cargo

📌 Método para mostrar información

def mostrar_informacion(self):

print(f»Nombre: {self.nombre}»)

print(f»Edad: {self.edad}»)

print(f»Sexo: {self.sexo}»)

print(f»Cargo: {self.cargo}»)

Muestra los datos en pantalla de forma ordenada.

📌 Método para convertir a diccionario

def convertir_a_diccionario(self):

return { «nombre»: self.nombre, «edad»: self.edad, «sexo»: self.sexo, «cargo»: self.cargo }

Esto es necesario porque JSON no puede guardar objetos, pero sí diccionarios.

📦 3. Función para guardar en JSON

def guardar_en_json(persona_dict):

archivo = «personal.json»

if os.path.exists(archivo):

with open(archivo, «r», encoding=»utf-8″) as f: datos = json.load(f)

else: datos = [] datos.append(persona_dict)

with open(archivo, «w», encoding=»utf-8″) as f: json.dump(datos, f, indent=4, ensure_ascii=False)

¿Qué hace?

  1. Comprueba si el archivo existe

    • Si existe → lo abre y carga su contenido.
    • Si no existe → crea una lista vacía.

  2. Agrega la nueva persona a la lista.
  3. Vuelve a guardar todo en el archivo JSON.

¿Por qué funciona tan bien?

Porque no borra lo anterior, solo añade.

🧑‍💻 4. Programa principal: registrar una persona

print(«—–Registro de Personal—–\n»)

nombre = input(«Ingrese el nombre: «)

edad = input(«Ingrese la edad: «)

sexo = input(«Ingrese el sexo: «)

cargo = input(«Ingrese el cargo: «)

Pide los datos al usuario.

📌 Crear el objeto

persona = Personal(nombre, edad, sexo, cargo)

Aquí se crea una persona real usando la clase.

📌 Mostrar y guardar

persona.mostrar_informacion() guardar_en_json(persona.convertir_a_diccionario())

  • Muestra los datos en pantalla.
  • Convierte la persona a diccionario.
  • La guarda en el archivo JSON.

📁 5. Leer el archivo JSON

with open(«personal.json», «r», encoding=»utf-8″) as archivo: datos = json.load(archivo)

Carga todas las personas registradas en una lista llamada datos.

🔍 6. Búsqueda por cargo

while True: print(«\n Estas en buscar a una persona por cargo \n»)

cargo_buscar = input(«Ingrese el cargo a buscar (o ‘salir’ para terminar): «) 

Bucle infinito hasta que el usuario escriba salir.

📌 Buscar coincidencias

encontrado = False for persona in datos:

if persona[«cargo»].lower() == cargo_buscar.lower():

print(«Persona encontrada:»)

print(json.dumps(persona, indent=4, ensure_ascii=False)) encontrado = True break

¿Qué hace?

  • Recorre todas las personas del JSON.
  • Compara el cargo ignorando mayúsculas/minúsculas.
  • Si encuentra una coincidencia:

  • La imprime en formato bonito.
  • Marca encontrado = True.
  • Sale del bucle.

📌 Si no encuentra nada

if not encontrado: print(«Cargo no encontrada.»)

📌 Pausa y limpiar pantalla

system(«pause»)

system(«cls»)

  • pause → espera que el usuario presione una tecla.
  • cls → limpia la pantalla (solo Windows).

🎯 Resumen visual del flujo

[Usuario escribe datos]

↓ [Se crea un objeto Personal]

↓ [Se convierte a diccionario]

↓ [Se guarda en personal.json]

↓ [Se cargan todos los registros]

↓ [Usuario busca por cargo]

↓ [Se muestran coincidencias]




Poo en Python muy sencillo

Código completo (para referencia)

class Animal:
    def __init__(self, nombre):
        self.nombre = nombre

    def hablar(self):
        return "Sonido genérico"
class Perro(Animal):
    def hablar(self):
        return "Guau!"
class Gato(Animal):
    def hablar(self):
        return "Miau!"
animales = [Perro("Firulais"), Gato("Misu")]

for animal in animales:
    print(f"{animal.nombre} dice: {animal.hablar()}")

Primera parte: clase Animal

class Animal:

  • class Animal:
    Declara una nueva clase llamada Animal.
    Una clase es un “molde” o “plantilla” para crear objetos del tipo Animal.
    def __init__(self, nombre):

  • def __init__(self, nombre):
    Define el método especial __init__, que es el constructor.
    Se ejecuta automáticamente cuando creas un Animal.

    • self representa al propio objeto.
    • nombre es un parámetro que recibirá el nombre del animal.

        self.nombre = nombre

  • self.nombre = nombre
    Crea un atributo llamado nombre dentro del objeto.
    Guarda en self.nombre el valor que se pasa al crear el animal.
    Es decir, el objeto recordará su nombre.
    def hablar(self):

  • def hablar(self):
    Declara un método llamado hablar para la clase Animal.
    Este será el comportamiento “genérico” de hablar.
        return "Sonido genérico"

  • return "Sonido genérico"
    Cuando se llame a hablar() en un Animal, devolverá esta cadena.
    Más adelante, las clases hijas lo cambiarán por sonidos más específicos.

Segunda parte: clase Perro que hereda de Animal

class Perro(Animal):

  • class Perro(Animal):
    Crea una clase Perro que hereda de Animal.
    Eso significa que Perro tiene todo lo de Animal (como nombre), pero puede añadir o cambiar cosas.
    def hablar(self):

  • def hablar(self):
    Define el método hablar en Perro.
    Este método sobrescribe (reemplaza) el hablar genérico de Animal.
        return "Guau!"

  • return "Guau!"
    Cuando se llame a hablar() en un Perro, devolverá "Guau!".

Tercera parte: clase Gato que también hereda de Animal

class Gato(Animal):

  • class Gato(Animal):
    Declara la clase Gato que también hereda de Animal.
    Igual que Perro, tiene nombre y puede hablar.
    def hablar(self):

  • def hablar(self):
    Sobrescribe el método hablar para los gatos.
        return "Miau!"

  • return "Miau!"
    Cuando se llame a hablar() en un Gato, devolverá "Miau!".

Cuarta parte: creando objetos y usando polimorfismo

animales = [Perro("Firulais"), Gato("Misu")]

  • animales = [...]
    Crea una lista llamada animales.
  • Perro("Firulais")
    Crea un objeto de tipo Perro con nombre = "Firulais".
    Internamente llama a __init__ de Animal y guarda ese nombre.
  • Gato("Misu")
    Crea un objeto de tipo Gato con nombre = "Misu".
    También usa el constructor heredado.
  • La lista contiene ahora dos objetos: un perro y un gato.
for animal in animales:

  • for animal in animales:
    Inicia un bucle que recorre cada elemento de la lista animales.
    En cada vuelta, la variable animal será:

    • Primero, el Perro("Firulais")
    • Después, el Gato("Misu")

    print(f"{animal.nombre} dice: {animal.hablar()}")

  • print(f"{animal.nombre} dice: {animal.hablar()}")
    Usa una f-string para formatear el texto.

  • Aquí es donde aparece el polimorfismo:

    • Si animal es un Perro, hablar() devuelve "Guau!".
    • Si animal es un Gato, hablar() devuelve "Miau!".

  • En pantalla verás:

    • Firulais dice: Guau!
    • Misu dice: Miau!




Inteligencia Artificial con Python: Potenciando el Futuro

La inteligencia artificial (IA) ha dejado de ser un concepto futurista para convertirse en una herramienta clave en múltiples sectores. Desde la automatización de tareas hasta la toma de decisiones basada en datos, la IA está revolucionando el mundo. Y en el corazón de este avance tecnológico, Python se ha consolidado como el lenguaje preferido por investigadores y desarrolladores gracias a su simplicidad y versatilidad.

¿Por qué Python para IA?

Python es un lenguaje accesible, con una sintaxis clara y una enorme comunidad que lo respalda. Estas características lo han convertido en la opción ideal para proyectos de IA. Además, cuenta con poderosas bibliotecas especializadas como:

  • NumPy y Pandas: fundamentales para la manipulación y análisis de datos.
  • Scikit-learn: perfecta para la implementación de algoritmos de aprendizaje automático.
  • TensorFlow y PyTorch: imprescindibles para el desarrollo de redes neuronales y aprendizaje profundo.

Aplicaciones Prácticas

Python no solo facilita el desarrollo de modelos de IA, sino que también impulsa aplicaciones en diversas áreas:

  • Reconocimiento de imágenes y voz: usada en sistemas de seguridad y asistentes virtuales.
  • Procesamiento de lenguaje natural: clave para la automatización de respuestas y análisis de texto.
  • Predicción y análisis de datos: esencial en la industria financiera y médica.

Ejemplo Práctico: Clasificación con Scikit-learn

Veamos un breve código en Python para entrenar un modelo de clasificación con la biblioteca scikit-learn:

Conclusión

Python ha democratizado el acceso a la inteligencia artificial, permitiendo que desde estudiantes hasta grandes corporaciones aprovechen su potencial. Con una comunidad vibrante y herramientas poderosas, el futuro de la IA con Python parece más brillante que nunca.




Envío de correos desde Python

¿Qué es MIME?

MIME (Extensiones Multipropósito de Correo de Internet) es un estándar que permite la transmisión de varios tipos de contenido a través del correo electrónico, más allá del texto simple.

  • Versatilidad: MIME permite incluir texto, imágenes, audio, video y otros tipos de archivos en los mensajes de correo electrónico.
  • Codificación: Especifica métodos para codificar datos no textuales en texto plano para una transmisión segura por Internet.
  • Encabezados: Agrega campos adicionales a los encabezados estándar del correo electrónico para indicar el tipo y la codificación del contenido.

Ejemplo de Código, vemos que es una clase:

import smtplib
import mimetypes
from email.message import EmailMessage
from email.utils import make_msgid
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.base import MIMEBase
from email import encoders

Configuración del servidor SMTP

smtp_server = «smtp.gmail.com»
smtp_port = 587
username = «tu_correo@gmail.com»
password = «tu_contraseña»

Creación del mensaje

msg = MIMEMultipart()
msg[‘From’] = username
msg[‘To’] = «destinatario@ejemplo.com»
msg[‘Subject’] = «Asunto del Correo»

Cuerpo del correo

body = «Hola, este es un correo con un archivo adjunto.»
msg.attach(MIMEText(body, ‘plain’))

Adjuntar archivo

filename = «archivo.txt»
attachment = open(filename, «rb»)

mime_base = MIMEBase(‘application’, ‘octet-stream’)
mime_base.set_payload(attachment.read())
encoders.encode_base64(mime_base)
mime_base.add_header(‘Content-Disposition’, f»attachment; filename= {filename}»)

msg.attach(mime_base)

Envío del correo

server = smtplib.SMTP(smtp_server, smtp_port)
server.starttls()
server.login(username, password)
server.send_message(msg)
server.quit()

print(«Correo enviado con éxito.»)

Este código hace lo siguiente:

  1. Configura el servidor SMTP.
  2. Crea un mensaje MIME multipart.
  3. Adjunta un cuerpo de texto al correo.
  4. Adjunta un archivo.
  5. Envía el correo a través del servidor SMTP

De no existir el archivo nos remitirá este error:

attachment = open(filename, «rb»)
FileNotFoundError: [Errno 2] No such file or directory: ‘archivo.txt’




Diagramas de flujo

Los diagramas de flujo son herramientas visuales muy útiles para representar procesos y decisiones! Son perfectos para planificar, documentar o visualizar el flujo de trabajo. Aquí te dejo un ejemplo básico de cómo se podría estructurar un diagrama de flujo para un proceso de toma de decisiones simple:

Introducción a los Diagramas de Flujo

Los diagramas de flujo son representaciones gráficas de procesos y flujos de trabajo. Se utilizan para ilustrar la secuencia de pasos necesarios para completar una tarea o resolver un problema, facilitando la comprensión y el análisis de procesos complejos.

Historia y Origen

El concepto de los diagramas de flujo se originó en la década de 1920 gracias a ingenieros industriales como Frank y Lillian Gilbreth. Fueron popularizados en los años 40 con la publicación del libro «Procedure for Program and System Flow Diagrams» por Herman Goldstine y John von Neumann.

Simbología Básica

Los diagramas de flujo utilizan una serie de símbolos estándar para representar diferentes tipos de acciones o decisiones:

  • Óvalo: Representa el inicio o el fin de un proceso.
  • Rectángulo: Indica una etapa o acción.
  • Rombo: Utilizado para decisiones, mostrando diferentes rutas dependiendo de la respuesta.
  • Flechas: Muestran la dirección del flujo de proceso.

Aplicaciones

  1. Planificación y Mejora de Procesos: Ayudan a identificar cuellos de botella y áreas de mejora.
  2. Documentación de Procedimientos: Proveen una representación clara y detallada de los pasos en un proceso.
  3. Resolución de Problemas: Facilitan el análisis de procesos para encontrar soluciones efectivas.
  4. Educación y Formación: Utilizados como herramientas didácticas en la enseñanza de diversas disciplinas.

Beneficios de Usar Diagramas de Flujo

  • Claridad: Simplifican procesos complejos, haciéndolos más fáciles de entender.
  • Eficiencia: Ayudan a identificar redundancias y optimizar flujos de trabajo.
  • Comunicación: Facilitan la comunicación de procesos entre diferentes partes interesadas.

Cómo Crear un Diagrama de Flujo

  1. Definir el objetivo: Determina el proceso o problema que deseas ilustrar.
  2. Identificar los pasos clave: Desglosa el proceso en sus componentes esenciales.
  3. Elegir los símbolos adecuados: Utiliza la simbología estándar para representar cada paso.
  4. Conectar los elementos: Utiliza flechas para mostrar la secuencia y la dirección del flujo.
  5. Revisar y ajustar: Asegúrate de que el diagrama sea claro y preciso, realizando ajustes si es necesario.

Conclusión

Los diagramas de flujo son herramientas poderosas para la planificación, documentación y mejora de procesos. Su capacidad para simplificar y visualizar procedimientos los convierte en esenciales para la gestión eficiente y efectiva en diversos campos.




Cargar una imagen desde un archivo en Python.

Para cargar una imagen desde un script en Python, debemos hacer uso de biblioteca PIL. De lo contrario, lanzará el error: ‘ModuleNotFoundError: No module named ‘PIL’.

la biblioteca de imágenes de Python (PIL). Este error generalmente ocurre cuando el módulo PIL no está instalado en tu entorno de Python. Para resolver esto, puedes instalar la biblioteca Pillow, que es la versión actualizada y más compatible de PIL. Aquí te explico cómo hacerlo:

  1. Abre tu terminal o símbolo del sistema
  2. Ejecuta el siguiente comando:

  • Tambien es muy posible que nos falle otra vez y ahora con este mensaje al intentar instalar pillow.

mas o menos asi:

Este mensaje de error indica que el comando pip no se reconoce en tu sistema porque no está configurado correctamente en tu variable de entorno PATH. Aquí te dejo los pasos para solucionarlo:

Para reproducir o mostrar una imagen en Python, puedes usar la biblioteca Pillow, que ya mencionamos anteriormente es posible que hasta que no reinicies el P.C. siga dando error.

Aquí tienes un ejemplo simple de cómo hacerlo:

  1. Primero, asegúrate de tener Pillow instalado:
  2. Luego, usa el siguiente código para abrir y mostrar una imagen:

Este código abrirá la imagen especificada por la ruta y la mostrará en una ventana. Solo tienes que reemplazar 'ruta/a/tu/imagen.jpg' con la ruta de la imagen que deseas mostrar.

En este ejemplo de código fuente, he seleccionado una foto del blog de un café, y ambos archivos están en la misma carpeta, por lo que deberían abrirse de esta manera:




Modulo time en python

Con la ayuda de Microsoft Copilot, su compañero de IA, se ha creado este artículo.

– Módulo time en Python proporciona varias funciones para trabajar con el tiempo y la fecha. A continuación, se describen algunas de las funciones más comunes que ofrece:

  • time.time(): Devuelve el tiempo actual en segundos desde la época (1 de enero de 1970), que fue cuando los que crearon este módulo así lo decidieron el inicio.
  • time.sleep(secs): Pausa la ejecución del programa durante el número de segundos especificado.
  • time.localtime([secs]): Convierte un número de segundos desde la época en una estructura de tiempo local. Si no se especifican los segundos, utiliza el tiempo actual.
  • time.strftime(format, t): Convierte una tupla de tiempo o una estructura de tiempo en una cadena de caracteres según el formato especificado.
  • time.strptime(string, format): Convierte una cadena de caracteres en una estructura de tiempo según el formato especificado.

Ejemplo de uso:

Más ejemplos de cómo funcionan estas funciones:




Script para abrir una pagina WEB en Python

Browser.

Tenemos que importar el módulo { webbrowser }

  • open_new abre una ventana nueva si ya se encuentra abierta.
  • open_new_tab abre una ventana en el navegador que ya esta abierto.
  • open abre una instancia en el navegador.

Podemos usar open para abir una web de esta manera, por ejemplo con un if condicional:

  • if menu == » s «:

    • print (» Se abrira la WEB «)
    • webbrowser.open(«https://elblogdemia.es/»)# Llamada a la pagina WEB

Recuerda inportar.

  • import webbrowser # Importador para llamar a una pagina web

En este código verás cómo se abren las páginas web que introduzcas entre las comillas:




Base de datos SQLite3 y DB browser

El módulo que viene preinstalado en Python para trabajar con bases de datos es SQLite, y se importa de la siguiente manera:

  • import sqlite3

Este módulo facilita la conexión a SQLite mediante el método ‘connect’, al cual debemos especificar la ruta del archivo; si el archivo no existe, se creará automáticamente.

Para evitar que no de un error devemos de poner un condicional para que no cree la tabla si ya existe, con un if mas o menos de esta forma:

  • CREATE TABLE if not exists nombre de la tabla

Debemos cerrar con close() porque si no lo hacemos, no podremos trabajar con ella.

Ejemplo de codigo:

Podemos crear el codigo de SQlite desde la aplicacion que ya te trae desde su WEB o bien copia y pegar.

Lo instalamos desde la página web httpswww.sqlite.org y luego procedemos a la instalación.

DB Browser for SQLite es el editor que nos permite interactuar con las bases de datos.

DB Browser for SQLite pagina de descarga:

Forma de introducir datos en una base:

  • cursor.executemany(«INSERT INTO personal VALUES(?,?,?)», nombre de la tabla)