ORM
Un ORM (Object-Relational Mapping) es una técnica de programación que permite a los desarrolladores trabajar con bases de datos relacionales utilizando objetos de programación en lugar de escribir consultas SQL directamente. En otras palabras, un ORM actúa como una capa de abstracción entre la base de datos y el código de la aplicación, mapeando las tablas y relaciones de la base de datos a clases y objetos en el lenguaje de programación.
El principal objetivo de un ORM es simplificar el proceso de interacción con la base de datos y reducir la cantidad de código repetitivo que los desarrolladores necesitan escribir. Algunas de las funcionalidades que proporciona un ORM incluyen:
-
Mapeo objeto-relacional: El ORM mapea las clases y propiedades de objetos en el código de la aplicación a tablas y columnas en la base de datos, y viceversa.
-
Abstracción de consultas: En lugar de escribir consultas SQL directamente, los desarrolladores pueden utilizar métodos de alto nivel proporcionados por el ORM para realizar operaciones de lectura, escritura, actualización y eliminación de datos.
-
Administración de transacciones: Los ORMs suelen proporcionar funcionalidades para gestionar transacciones de forma sencilla, lo que permite realizar operaciones atómicas en la base de datos.
-
Migraciones de esquema: Algunos ORMs ofrecen herramientas para gestionar cambios en la estructura de la base de datos, como la adición o eliminación de tablas y columnas, de una manera controlada y automática.
-
Portabilidad de código: Al utilizar un ORM, el código de la aplicación puede ser más portable entre diferentes bases de datos, ya que el ORM se encarga de traducir las operaciones de base de datos a las sintaxis específicas de cada proveedor de base de datos.
En resumen, un ORM es una herramienta poderosa que simplifica el desarrollo de aplicaciones que interactúan con bases de datos relacionales, permitiendo a los desarrolladores enfocarse más en la lógica de la aplicación y menos en los detalles de la manipulación de datos en la base de datos.
peewee
Para crear una base de datos en MariaDB utilizando Peewee en Python, primero debes asegurarte de tener instalados tanto MariaDB como Peewee en tu entorno de desarrollo. Luego, puedes seguir estos pasos:
- Instala Peewee si aún no lo has hecho. Puedes hacerlo usando pip:
pip install peewee
pip install mysqlclient
pip install pymysql # Windows
- Importa las clases necesarias de Peewee:
from peewee import *
- Define la conexión a tu base de datos MariaDB:
db = MySQLDatabase('nombre_db', user='usuario', password='contraseña',
host='localhost', port=3306)
Asegúrate de reemplazar 'nombre_db'
, 'usuario'
, y 'contraseña'
con los detalles correctos de tu base de datos MariaDB.
- Define tu modelo de datos utilizando la clase
Model
de Peewee. Por ejemplo:
class Libro(Model):
titulo = CharField()
autor = CharField()
editorial = CharField()
class Meta:
database = db # Enlaza este modelo a la base de datos definida anteriormente
- Luego, crea las tablas en la base de datos utilizando el método
create_tables()
:
db.connect()
db.create_tables([Libro])
Esto creará la tabla Libro
en tu base de datos si no existe.
Aquí tienes un ejemplo completo:
from peewee import *
# Define la conexión a la base de datos
db = MySQLDatabase('nombre_db', user='usuario', password='contraseña',
host='localhost', port=3306)
# Define tu modelo de datos
class Libro(Model):
titulo = CharField()
autor = CharField()
editorial = CharField()
class Meta:
database = db # Enlaza este modelo a la base de datos definida anteriormente
# Crea las tablas en la base de datos
db.connect()
db.create_tables([Libro])
Recuerda reemplazar 'nombre_db'
, 'usuario'
, y 'contraseña'
con los detalles correctos de tu base de datos MariaDB. Y asegúrate de que MariaDB esté en ejecución y que tengas permisos para crear bases de datos y tablas.
Operaciones con peewee
SELECT (Consulta)
Para realizar una consulta (SELECT) en Peewee, utilizamos el método select()
y luego podemos aplicar condiciones o filtros utilizando métodos adicionales. Aquí tienes un ejemplo de cómo realizar una consulta para seleccionar todos los libros de la base de datos:
libros = Libro.select() for libro in libros: print(libro.titulo, libro.autor)
### INSERT (Inserción)
Para insertar un nuevo registro en la base de datos, creamos una nueva instancia del modelo y luego llamamos al método `save()`. Aquí tienes un ejemplo:
```python
# Crear un nuevo libro
nuevo_libro = Libro(titulo='Nuevo libro', autor='Autor Desconocido', editorial='Editorial')
nuevo_libro.save()
UPDATE (Actualización)
Para actualizar un registro existente, primero lo seleccionamos, modificamos sus atributos y luego llamamos al método save()
. Aquí tienes un ejemplo:
# Seleccionar el libro a actualizar
libro_a_actualizar = Libro.get(Libro.titulo == 'Libro a actualizar')
# Modificar los atributos
libro_a_actualizar.autor = 'Nuevo autor'
libro_a_actualizar.save()
DELETE (Eliminación)
Para eliminar un registro de la base de datos, primero lo seleccionamos y luego llamamos al método delete_instance()
. Aquí tienes un ejemplo:
# Seleccionar el libro a eliminar
libro_a_eliminar = Libro.get(Libro.titulo == 'Libro a eliminar')
# Eliminar el libro
libro_a_eliminar.delete_instance()
Transacciones
Peewee soporta transacciones, que son operaciones atómicas que garantizan la consistencia de la base de datos. Aquí tienes un ejemplo de cómo utilizar una transacción:
# Comenzar la transacción
with db.atomic():
# Operaciones dentro de la transacción
nuevo_libro = Libro(titulo='Nuevo libro', autor='Autor', editorial='Editorial')
nuevo_libro.save()
otro_libro = Libro(titulo='Otro libro', autor='Otro Autor', editorial='Editorial')
otro_libro.save()
En este ejemplo, todas las operaciones dentro del bloque with db.atomic()
serán ejecutadas como una única transacción. Si ocurre algún error durante la transacción, se realizará un rollback y se desharán todos los cambios realizados. Si todas las operaciones son exitosas, se realizará un commit y los cambios serán guardados permanentemente en la base de datos.
Migraciones
Una migración de base de datos es un proceso que implica realizar cambios en la estructura de una base de datos de una forma controlada y reproducible, sin perder datos existentes. Esto puede incluir la adición, eliminación o modificación de tablas, columnas, restricciones, índices u otras estructuras de la base de datos.
Las migraciones de base de datos son esenciales en el desarrollo de software, especialmente en entornos donde varias personas trabajan en el mismo proyecto o cuando se despliegan actualizaciones de software en entornos de producción. Algunas de las razones por las que se utilizan las migraciones de base de datos son:
-
Mantenimiento de la consistencia de la base de datos: Las migraciones permiten mantener la estructura de la base de datos en sincronización con los cambios en el modelo de datos de la aplicación.
-
Control de versiones de la base de datos: Las migraciones proporcionan una forma de realizar un seguimiento de los cambios realizados en la estructura de la base de datos a lo largo del tiempo, lo que facilita la colaboración entre equipos y la gestión de versiones.
-
Reproducibilidad: Las migraciones son scripts de código que pueden ser ejecutados repetidamente en diferentes entornos (desarrollo, pruebas, producción) para asegurar que la estructura de la base de datos sea consistente en todos ellos.
-
Gestión de cambios de esquema: Las migraciones permiten gestionar los cambios en el esquema de la base de datos de una manera ordenada y estructurada, evitando problemas como la pérdida de datos o la corrupción de la base de datos.
-
Rollback: Las migraciones suelen proporcionar la capacidad de realizar un rollback o deshacer los cambios en caso de que ocurra un error durante el proceso de migración.
En resumen, las migraciones de base de datos son una herramienta fundamental en el desarrollo de software para gestionar de manera efectiva los cambios en la estructura de la base de datos y mantener la integridad y consistencia de los datos a lo largo del tiempo.
peewee-migrations
Ver peewee-migrations https://pypi.org/project/peewee-migrations/