CLASES PERCISTENTES EN PYTHON - Final
CLASES PERCISTENTES EN PYTHON - Final
CLASES PERCISTENTES EN PYTHON - Final
1. Introducción:
La persistencia en programación se refiere a la capacidad de un objeto de sobrevivir
más allá de la ejecución del programa que lo creó. En Python, esto se logra
comúnmente mediante el uso de bases de datos, archivos de texto, archivos binarios,
y otros sistemas de almacenamiento. La persistencia permite que los objetos se
almacenen y recuperen, conservando su estado entre las ejecuciones del programa.
2. Métodos de persistencia:
• ARCHIVOS DE TEXTO:
Los archivos de texto son una forma simple y directa de almacenar datos
en un formato legible por humanos. Este método es útil para almacenar
datos estructurados de manera sencilla, como registros de log,
configuraciones y datos de pequeño tamaño.
• BASES DE DATOS:
• ARCHIVOS BINARIOS:
• ARCHIVOS CSV:
• ARCHIVOS YAML
import pickle
# Serializar un objeto
with open('datos.pkl', 'wb') as file:
pickle.dump(objeto, file)
# Deserializar un objeto
with open('datos.pkl', 'rb') as file:
objeto = pickle.load(file)
import json
# Serializar un objeto
with open('datos.json', 'w') as file:
json.dump(objeto, file)
# Deserializar un objeto
with open('datos.json', 'r') as file:
objeto = json.load(file)
import sqlite3
# Insertar datos
cursor.execute("INSERT INTO productos (nombre, cantidad, precio) VALUES
('Manzana', 50, 0.30)")
conn.commit()
# Consultar datos
cursor.execute("SELECT * FROM productos")
print(cursor.fetchall())
conn.close()
import shelve
4. Ejercicio:
5. Solución:
- Instalar SQLAlchemy:
• Crear productos.
• Leer productos.
• Actualizar productos.
• Eliminar productos.
1. Instalar SQLAlchemy
pip install sqlalchemy
id = Column(Integer, primary_key=True)
nombre = Column(String)
cantidad = Column(Integer)
precio = Column(Float)
def __repr__(self):
return f"<Producto(nombre={self.nombre}, cantidad={self.cantidad},
precio={self.precio})>"
# Ejemplo de uso
crear_producto('Laptop', 10, 999.99)
- Leer producto
def leer_productos():
productos = session.query(Producto).all()
for producto in productos:
print(producto)
# Ejemplo de uso
leer_productos()
- Actualizar producto:
def actualizar_producto(producto_id, nombre=None, cantidad=None,
precio=None):
producto = session.query(Producto).filter_by(id=producto_id).first()
if producto:
if nombre:
producto.nombre = nombre
if cantidad:
producto.cantidad = cantidad
if precio:
producto.precio = precio
session.commit()
print(f"Producto {producto_id} actualizado.")
else:
print(f"Producto {producto_id} no encontrado.")
# Ejemplo de uso
actualizar_producto(1, cantidad=20)
- Eliminar Producto
def eliminar_producto(producto_id):
producto = session.query(Producto).filter_by(id=producto_id).first()
if producto:
session.delete(producto)
session.commit()
print(f"Producto {producto_id} eliminado.")
else:
print(f"Producto {producto_id} no encontrado.")
# Ejemplo de uso
eliminar_producto(1)
- Ejecución
def menu():
while True:
print("\n1. Crear Producto")
print("2. Leer Productos")
print("3. Actualizar Producto")
print("4. Eliminar Producto")
print("5. Salir")
if opcion == '1':
nombre = input("Nombre del producto: ")
cantidad = int(input("Cantidad del producto: "))
precio = float(input("Precio del producto: "))
crear_producto(nombre, cantidad, precio)
elif opcion == '2':
leer_productos()
elif opcion == '3':
producto_id = int(input("ID del producto a actualizar: "))
nombre = input("Nuevo nombre (dejar vacío si no cambia): ")
cantidad = input("Nueva cantidad (dejar vacío si no cambia): ")
precio = input("Nuevo precio (dejar vacío si no cambia): ")
actualizar_producto(producto_id, nombre or None, int(cantidad)
if cantidad else None, float(precio) if precio else None)
elif opcion == '4':
producto_id = int(input("ID del producto a eliminar: "))
eliminar_producto(producto_id)
elif opcion == '5':
break
else:
print("Opción no válida.")
if __name__ == '__main__':
menu()
6. Conclusión