Translate

lunes, 8 de julio de 2024

SQLAlchemy un ORM para Python


SQLAlchemy es una librería de SQL para Python que facilita el manejo de bases de datos relacionales. Combina un conjunto completo de herramientas de alto nivel y bajo nivel para la creación y manipulación de esquemas de bases de datos, la construcción de consultas SQL y la gestión de transacciones.

1. SQLAlchemy Core: Proporciona una capa de abstracción de SQL que permite escribir consultas SQL directamente, pero de una manera más segura y con mejor soporte para múltiples bases de datos.

2. SQLAlchemy ORM: Permite mapear clases de Python a tablas de bases de datos y proporciona una forma orientada a objetos para interactuar con las bases de datos.


Puedes instalar SQLAlchemy utilizando pip:


pip install sqlalchemy


Además, si planeas usar una base de datos específica, como SQLite, PostgreSQL o MySQL, necesitarás instalar el conector adecuado. Por ejemplo, para PostgreSQL:


pip install psycopg2


Vamos a empezar con un ejemplo básico de cómo definir un modelo de base de datos usando SQLAlchemy ORM.


from sqlalchemy import create_engine, Column, Integer, String

from sqlalchemy.ext.declarative import declarative_base

from sqlalchemy.orm import sessionmaker


engine = create_engine('sqlite:///example.db', echo=True)


Base = declarative_base()


class User(Base):

    __tablename__ = 'users'


    id = Column(Integer, primary_key=True)

    name = Column(String)

    age = Column(Integer)


    def __repr__(self):

        return f"<User(name={self.name}, age={self.age})>"


# Crear todas las tablas

Base.metadata.create_all(engine)


# Crear una sesión

Session = sessionmaker(bind=engine)

session = Session()

```


En este ejemplo, hemos configurado un motor de base de datos SQLite y definido una clase `User` que mapea a la tabla `users`. Luego, creamos todas las tablas necesarias y configuramos una sesión para interactuar con la base de datos.

Para insertar datos en la base de datos, simplemente creamos instancias de la clase del modelo y las añadimos a la sesión.


# Crear un nuevo usuario

new_user = User(name='John Doe', age=30)


# Añadir el usuario a la sesión

session.add(new_user)


# Confirmar la transacción

session.commit()


SQLAlchemy proporciona una API poderosa y flexible para consultar datos.


# Obtener todos los usuarios

users = session.query(User).all()

print(users)


# Obtener un usuario específico

user = session.query(User).filter_by(name='John Doe').first()

print(user)


Para actualizar un registro, primero lo consultas, modificas los atributos y luego confirmas la transacción.


# Obtener el usuario

user = session.query(User).filter_by(name='John Doe').first()


# Modificar el usuario

user.age = 31


# Confirmar la transacción

session.commit()


Para eliminar un registro, lo consultas, lo eliminas de la sesión y confirmas la transacción.


# Obtener el usuario

user = session.query(User).filter_by(name='John Doe').first()


# Eliminar el usuario

session.delete(user)


# Confirmar la transacción

session.commit()


SQLAlchemy es una herramienta poderosa y flexible para gestionar bases de datos en Python. Su combinación de mapeo orientado a objetos y capacidades de SQL crudo lo hace adecuado para una amplia variedad de aplicaciones. 

Dejo link: https://www.sqlalchemy.org/