Capítulo 19: Operaciones avanzadas de base de datos con SQLAlchemy
19.3 Comprendiendo SQLAlchemy ORM
SQLAlchemy es un conjunto de herramientas completo y potente que ofrece una amplia gama de patrones de persistencia de nivel empresarial, diseñados para permitir el acceso eficiente y de alto rendimiento a la base de datos. Proporciona un lenguaje de dominio simple y pythonico que es fácil de usar y entender.
El concepto de Mapeo Objeto-Relacional, o ORM, es una técnica que permite la conexión de los objetos ricos de una aplicación a las tablas en un sistema de gestión de bases de datos relacional. Al utilizar ORM, las propiedades y relaciones de los objetos en una aplicación pueden almacenarse y recuperarse fácilmente de una base de datos sin necesidad de escribir declaraciones SQL directamente, lo que reduce el código de acceso a la base de datos en general.
Además, el ORM en SQLAlchemy está construido sobre el Core, proporcionando una suite completa de capacidades de mapeo entre clases de Python y bases de datos relacionales. Esto significa que SQLAlchemy proporciona un enfoque flexible y completo para el acceso a la base de datos, que puede adaptarse para satisfacer las necesidades específicas de tu aplicación.
Ejemplo:
Comencemos con un ejemplo simple de creación de una Sesión SQLAlchemy, que es el objeto principal utilizado para interactuar con una base de datos mapeada por ORM:
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
engine = create_engine('postgresql+psycopg2://myuser:mypassword@localhost:5432/mydatabase')
Session = sessionmaker(bind=engine)
session = Session()
Aquí primero creamos un motor que sabe cómo conectarse a la base de datos, luego definimos una clase Session que servirá como una fábrica para nuevas instancias de Session, y finalmente creamos una sesión que podemos usar para comunicarnos con la base de datos.
Esta sesión es un controlador de la base de datos, similar a un cursor en una API de base de datos tradicional, pero con muchas más características. Puedes usarlo para consultar la base de datos, modificarla y persistir los cambios de manera transaccional en la base de datos.
Ahora que tenemos una sesión, podemos usarla para ejecutar consultas SQL. Pero antes de hacer eso, necesitamos definir nuestros modelos de datos.
from sqlalchemy import Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()
class User(Base):
__tablename__ = 'users'
id = Column(Integer, primary_key=True)
name = Column(String)
fullname = Column(String)
nickname = Column(String)
def __repr__(self):
return "<User(name='%s', fullname='%s', nickname='%s')>" % (
self.name, self.fullname, self.nickname)
En este código, definimos una clase User que incluye campos para un id, nombre, nombre completo y apodo. La clase utiliza el sistema Declarativo de SQLAlchemy, que proporciona una forma conveniente de declarar esquemas y modelos en una sola declaración de clase.
En la próxima sección, veremos cómo usar estos modelos para realizar operaciones de base de datos utilizando el ORM de SQLAlchemy.
19.3 Comprendiendo SQLAlchemy ORM
SQLAlchemy es un conjunto de herramientas completo y potente que ofrece una amplia gama de patrones de persistencia de nivel empresarial, diseñados para permitir el acceso eficiente y de alto rendimiento a la base de datos. Proporciona un lenguaje de dominio simple y pythonico que es fácil de usar y entender.
El concepto de Mapeo Objeto-Relacional, o ORM, es una técnica que permite la conexión de los objetos ricos de una aplicación a las tablas en un sistema de gestión de bases de datos relacional. Al utilizar ORM, las propiedades y relaciones de los objetos en una aplicación pueden almacenarse y recuperarse fácilmente de una base de datos sin necesidad de escribir declaraciones SQL directamente, lo que reduce el código de acceso a la base de datos en general.
Además, el ORM en SQLAlchemy está construido sobre el Core, proporcionando una suite completa de capacidades de mapeo entre clases de Python y bases de datos relacionales. Esto significa que SQLAlchemy proporciona un enfoque flexible y completo para el acceso a la base de datos, que puede adaptarse para satisfacer las necesidades específicas de tu aplicación.
Ejemplo:
Comencemos con un ejemplo simple de creación de una Sesión SQLAlchemy, que es el objeto principal utilizado para interactuar con una base de datos mapeada por ORM:
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
engine = create_engine('postgresql+psycopg2://myuser:mypassword@localhost:5432/mydatabase')
Session = sessionmaker(bind=engine)
session = Session()
Aquí primero creamos un motor que sabe cómo conectarse a la base de datos, luego definimos una clase Session que servirá como una fábrica para nuevas instancias de Session, y finalmente creamos una sesión que podemos usar para comunicarnos con la base de datos.
Esta sesión es un controlador de la base de datos, similar a un cursor en una API de base de datos tradicional, pero con muchas más características. Puedes usarlo para consultar la base de datos, modificarla y persistir los cambios de manera transaccional en la base de datos.
Ahora que tenemos una sesión, podemos usarla para ejecutar consultas SQL. Pero antes de hacer eso, necesitamos definir nuestros modelos de datos.
from sqlalchemy import Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()
class User(Base):
__tablename__ = 'users'
id = Column(Integer, primary_key=True)
name = Column(String)
fullname = Column(String)
nickname = Column(String)
def __repr__(self):
return "<User(name='%s', fullname='%s', nickname='%s')>" % (
self.name, self.fullname, self.nickname)
En este código, definimos una clase User que incluye campos para un id, nombre, nombre completo y apodo. La clase utiliza el sistema Declarativo de SQLAlchemy, que proporciona una forma conveniente de declarar esquemas y modelos en una sola declaración de clase.
En la próxima sección, veremos cómo usar estos modelos para realizar operaciones de base de datos utilizando el ORM de SQLAlchemy.
19.3 Comprendiendo SQLAlchemy ORM
SQLAlchemy es un conjunto de herramientas completo y potente que ofrece una amplia gama de patrones de persistencia de nivel empresarial, diseñados para permitir el acceso eficiente y de alto rendimiento a la base de datos. Proporciona un lenguaje de dominio simple y pythonico que es fácil de usar y entender.
El concepto de Mapeo Objeto-Relacional, o ORM, es una técnica que permite la conexión de los objetos ricos de una aplicación a las tablas en un sistema de gestión de bases de datos relacional. Al utilizar ORM, las propiedades y relaciones de los objetos en una aplicación pueden almacenarse y recuperarse fácilmente de una base de datos sin necesidad de escribir declaraciones SQL directamente, lo que reduce el código de acceso a la base de datos en general.
Además, el ORM en SQLAlchemy está construido sobre el Core, proporcionando una suite completa de capacidades de mapeo entre clases de Python y bases de datos relacionales. Esto significa que SQLAlchemy proporciona un enfoque flexible y completo para el acceso a la base de datos, que puede adaptarse para satisfacer las necesidades específicas de tu aplicación.
Ejemplo:
Comencemos con un ejemplo simple de creación de una Sesión SQLAlchemy, que es el objeto principal utilizado para interactuar con una base de datos mapeada por ORM:
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
engine = create_engine('postgresql+psycopg2://myuser:mypassword@localhost:5432/mydatabase')
Session = sessionmaker(bind=engine)
session = Session()
Aquí primero creamos un motor que sabe cómo conectarse a la base de datos, luego definimos una clase Session que servirá como una fábrica para nuevas instancias de Session, y finalmente creamos una sesión que podemos usar para comunicarnos con la base de datos.
Esta sesión es un controlador de la base de datos, similar a un cursor en una API de base de datos tradicional, pero con muchas más características. Puedes usarlo para consultar la base de datos, modificarla y persistir los cambios de manera transaccional en la base de datos.
Ahora que tenemos una sesión, podemos usarla para ejecutar consultas SQL. Pero antes de hacer eso, necesitamos definir nuestros modelos de datos.
from sqlalchemy import Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()
class User(Base):
__tablename__ = 'users'
id = Column(Integer, primary_key=True)
name = Column(String)
fullname = Column(String)
nickname = Column(String)
def __repr__(self):
return "<User(name='%s', fullname='%s', nickname='%s')>" % (
self.name, self.fullname, self.nickname)
En este código, definimos una clase User que incluye campos para un id, nombre, nombre completo y apodo. La clase utiliza el sistema Declarativo de SQLAlchemy, que proporciona una forma conveniente de declarar esquemas y modelos en una sola declaración de clase.
En la próxima sección, veremos cómo usar estos modelos para realizar operaciones de base de datos utilizando el ORM de SQLAlchemy.
19.3 Comprendiendo SQLAlchemy ORM
SQLAlchemy es un conjunto de herramientas completo y potente que ofrece una amplia gama de patrones de persistencia de nivel empresarial, diseñados para permitir el acceso eficiente y de alto rendimiento a la base de datos. Proporciona un lenguaje de dominio simple y pythonico que es fácil de usar y entender.
El concepto de Mapeo Objeto-Relacional, o ORM, es una técnica que permite la conexión de los objetos ricos de una aplicación a las tablas en un sistema de gestión de bases de datos relacional. Al utilizar ORM, las propiedades y relaciones de los objetos en una aplicación pueden almacenarse y recuperarse fácilmente de una base de datos sin necesidad de escribir declaraciones SQL directamente, lo que reduce el código de acceso a la base de datos en general.
Además, el ORM en SQLAlchemy está construido sobre el Core, proporcionando una suite completa de capacidades de mapeo entre clases de Python y bases de datos relacionales. Esto significa que SQLAlchemy proporciona un enfoque flexible y completo para el acceso a la base de datos, que puede adaptarse para satisfacer las necesidades específicas de tu aplicación.
Ejemplo:
Comencemos con un ejemplo simple de creación de una Sesión SQLAlchemy, que es el objeto principal utilizado para interactuar con una base de datos mapeada por ORM:
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
engine = create_engine('postgresql+psycopg2://myuser:mypassword@localhost:5432/mydatabase')
Session = sessionmaker(bind=engine)
session = Session()
Aquí primero creamos un motor que sabe cómo conectarse a la base de datos, luego definimos una clase Session que servirá como una fábrica para nuevas instancias de Session, y finalmente creamos una sesión que podemos usar para comunicarnos con la base de datos.
Esta sesión es un controlador de la base de datos, similar a un cursor en una API de base de datos tradicional, pero con muchas más características. Puedes usarlo para consultar la base de datos, modificarla y persistir los cambios de manera transaccional en la base de datos.
Ahora que tenemos una sesión, podemos usarla para ejecutar consultas SQL. Pero antes de hacer eso, necesitamos definir nuestros modelos de datos.
from sqlalchemy import Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()
class User(Base):
__tablename__ = 'users'
id = Column(Integer, primary_key=True)
name = Column(String)
fullname = Column(String)
nickname = Column(String)
def __repr__(self):
return "<User(name='%s', fullname='%s', nickname='%s')>" % (
self.name, self.fullname, self.nickname)
En este código, definimos una clase User que incluye campos para un id, nombre, nombre completo y apodo. La clase utiliza el sistema Declarativo de SQLAlchemy, que proporciona una forma conveniente de declarar esquemas y modelos en una sola declaración de clase.
En la próxima sección, veremos cómo usar estos modelos para realizar operaciones de base de datos utilizando el ORM de SQLAlchemy.