SQLAlchemy Core frente a ORM
Comprenda las dos capas
SQLAlchemy Core frente a ORM es una lección gratuita de Python Academy en CoddyKit. Esta es la lección 1 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Python Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Python Academy incluye 4 lecciones en total.
¿Qué es SQLAlchemy?
SQLAlchemy es el kit de herramientas de Python más popular para trabajar con bases de datos relacionales. Ofrece dos capas: Core y el ORM.
Se instala con pip install sqlalchemy.
from sqlalchemy import create_engine
engine = create_engine('sqlite:///:memory:')
print('Engine:', engine)El Engine
Ambas capas comienzan con un Engine, creado mediante create_engine(). Gestiona el conjunto de conexiones y sabe cómo comunicarse con su base de datos específica mediante una URL.
from sqlalchemy import create_engine
engine = create_engine('sqlite:///app.db')
print('Dialect:', engine.dialect.name)Las dos capas
Core es un kit de herramientas de expresiones SQL: usted crea consultas que se corresponden estrechamente con SQL.
El ORM se sitúa sobre Core y asigna clases de Python a tablas, de modo que trabaja con objetos en lugar de filas.
# Core: think in tables and SQL expressions
# ORM: think in Python classes and objects
print('Core = SQL toolkit, ORM = object mapping')Core: definir una tabla
En Core, describe explícitamente las tablas mediante objetos Table y MetaData.
from sqlalchemy import MetaData, Table, Column, Integer, String
metadata = MetaData()
users = Table('users', metadata,
Column('id', Integer, primary_key=True),
Column('name', String))
print('Table defined:', users.name)Core: construir una consulta
Core construye consultas con expresiones de Python como select(), que se traducen directamente a SQL.
from sqlalchemy import MetaData, Table, Column, Integer, String, select
metadata = MetaData()
users = Table('users', metadata,
Column('id', Integer, primary_key=True),
Column('name', String))
stmt = select(users).where(users.c.name == 'Alice')
print(stmt)ORM: una clase asignada
En el ORM, una clase de Python representa una tabla. Cada atributo se asigna a una columna. Consulta y guarda objetos, no filas sin procesar.
from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column
class Base(DeclarativeBase):
pass
class User(Base):
__tablename__ = 'users'
id: Mapped[int] = mapped_column(primary_key=True)
name: Mapped[str]
print('Mapped class:', User.__tablename__)Cuándo usar Core
Core resulta adecuado cuando desea controlar con precisión el SQL, realizar operaciones masivas con datos o ejecutar consultas complejas de informes en las que los objetos añadirían sobrecarga.
# Core is great for:
# - bulk inserts/updates
# - complex analytical queries
# - close control over generated SQL
print('Core: control and performance')Cuándo usar el ORM
El ORM resulta adecuado para el código habitual de una aplicación: modela las entidades de negocio como clases, ofrece seguimiento de cambios y requiere menos código repetitivo.
# ORM is great for:
# - application domain models
# - automatic change tracking
# - relationships between objects
print('ORM: productivity and clarity')Comparten el Engine
Como el ORM está construido sobre Core, ambos usan el mismo Engine y conjunto de conexiones. Incluso puede combinarlos en una misma aplicación.
from sqlalchemy import create_engine
engine = create_engine('sqlite:///:memory:')
# Core uses engine.connect()
# ORM uses a Session bound to the same engine
print('One engine powers both layers')Crear tablas
Con el ORM, Base.metadata.create_all(engine) genera las instrucciones CREATE TABLE para todas las clases asignadas.
from sqlalchemy import create_engine
from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column
class Base(DeclarativeBase):
pass
class User(Base):
__tablename__ = 'users'
id: Mapped[int] = mapped_column(primary_key=True)
engine = create_engine('sqlite:///:memory:')
Base.metadata.create_all(engine)
print('Tables created')Elegir una capa
La mayoría de las aplicaciones usa el ORM de forma predeterminada para el trabajo diario y recurre a Core para las consultas complejas o muy optimizadas que se necesitan ocasionalmente. Conocer ambas capas le proporciona flexibilidad.
# Rule of thumb:
# Start with the ORM. Use Core where you need raw power.
print('Default ORM, escape to Core when needed')Comprobación rápida
Compruebe cuánto entiende sobre las dos capas.
Resumen
Ha conocido la arquitectura de SQLAlchemy.
Engineimpulsa todo mediantecreate_engine()- Core es un kit de herramientas de expresiones SQL que ofrece control y rendimiento
- El ORM asigna clases a tablas para crear código de aplicaciones de forma productiva
- Ambos comparten el mismo engine y se pueden combinar
Preguntas frecuentes
¿La lección «SQLAlchemy Core frente a ORM» es gratis?
Sí — el texto completo de «SQLAlchemy Core frente a ORM» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Python Academy, actualiza a CoddyKit PRO. El curso de Python Academy incluye 4 lecciones en total.
¿Qué aprenderé en «SQLAlchemy Core frente a ORM»?
Comprenda las dos capas Practicas Python Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar Python Academy?
No se requiere experiencia previa. Python Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 1 de 4.
¿Cuánto tiempo toma la lección «SQLAlchemy Core frente a ORM»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de Python Academy?
Sí. Cada lección de Python Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- SQLAlchemy Core frente a ORM
- Definición de modelos
- Consultas con Session
- Relaciones y uniones