SQLAlchemy Core versus ORM
Entenda as duas camadas
SQLAlchemy Core versus ORM é uma aula grátis de Python Academy no CoddyKit. Esta é a aula 1 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Python Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Python Academy inclui 4 aulas no total.
O que é o SQLAlchemy
SQLAlchemy é o conjunto de ferramentas Python mais popular para trabalhar com bancos de dados relacionais. Ele oferece duas camadas: Núcleo e mapeamento objeto-relacional.
Você o instala com pip install sqlalchemy.
from sqlalchemy import create_engine
engine = create_engine('sqlite:///:memory:')
print('Engine:', engine)O mecanismo
As duas camadas começam com um mecanismo, criado por create_engine(). Ele gerencia o conjunto de conexões e sabe como se comunicar com seu banco de dados específico por meio de uma URL.
from sqlalchemy import create_engine
engine = create_engine('sqlite:///app.db')
print('Dialect:', engine.dialect.name)As duas camadas
O Núcleo é um conjunto de ferramentas para expressões SQL: você cria consultas que correspondem de perto ao SQL.
O mapeamento objeto-relacional se baseia no Núcleo e associa classes Python a tabelas, permitindo que você trabalhe com objetos em vez de linhas.
# Core: think in tables and SQL expressions
# ORM: think in Python classes and objects
print('Core = SQL toolkit, ORM = object mapping')Núcleo: definindo uma tabela
No Núcleo, você descreve tabelas explicitamente com objetos Table e 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)Núcleo: criando uma consulta
O Núcleo cria consultas com expressões Python, como select(), que são convertidas diretamente em 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)Mapeamento objeto-relacional: uma classe mapeada
No mapeamento objeto-relacional, uma classe Python representa uma tabela. Cada atributo corresponde a uma coluna. Você consulta e salva objetos, não linhas brutas.
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__)Quando usar o Núcleo
O Núcleo é adequado quando você deseja controle preciso sobre o SQL exato, precisa trabalhar com grandes volumes de dados ou executar consultas complexas de relatórios em que os objetos acrescentariam sobrecarga.
# Core is great for:
# - bulk inserts/updates
# - complex analytical queries
# - close control over generated SQL
print('Core: control and performance')Quando usar o mapeamento objeto-relacional
O mapeamento objeto-relacional é adequado ao código típico de aplicações: você modela entidades de negócio como classes, obtém rastreamento de alterações e escreve menos código repetitivo.
# ORM is great for:
# - application domain models
# - automatic change tracking
# - relationships between objects
print('ORM: productivity and clarity')Eles compartilham o mecanismo
Como o mapeamento objeto-relacional é construído sobre o Núcleo, ambos usam o mesmo mecanismo e o mesmo conjunto de conexões. Você pode até combiná-los em uma única aplicação.
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')Criando tabelas
Com o mapeamento objeto-relacional, Base.metadata.create_all(engine) emite as instruções CREATE TABLE para todas as classes mapeadas.
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')Escolhendo uma camada
Na maioria das aplicações, o padrão é usar o mapeamento objeto-relacional no trabalho cotidiano e recorrer ao Núcleo para consultas pesadas ou altamente ajustadas, que são menos frequentes. Conhecer as duas camadas oferece flexibilidade.
# Rule of thumb:
# Start with the ORM. Use Core where you need raw power.
print('Default ORM, escape to Core when needed')Verificação rápida
Teste sua compreensão sobre as duas camadas.
Recapitulação
Você conheceu a arquitetura do SQLAlchemy.
- O
Enginesustenta tudo por meio decreate_engine() - O Núcleo é um conjunto de ferramentas para expressões SQL, oferecendo controle e desempenho
- O mapeamento objeto-relacional associa classes a tabelas para criar código produtivo de aplicações
- Ambos compartilham o mesmo mecanismo e podem ser combinados
Perguntas Frequentes
A aula “SQLAlchemy Core versus ORM” é grátis?
Sim — o texto completo de “SQLAlchemy Core versus ORM” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Python Academy, atualize para CoddyKit PRO. O curso de Python Academy inclui 4 aulas no total.
O que vou aprender em “SQLAlchemy Core versus ORM”?
Entenda as duas camadas Você pratica Python Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Python Academy?
Nenhuma experiência prévia é necessária. Python Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 1 de 4.
Quanto tempo leva a aula “SQLAlchemy Core versus ORM”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Python Academy?
Sim. Cada aula de Python Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- SQLAlchemy Core versus ORM
- Definição de modelos
- Consultas com a Session
- Relacionamentos e junções