0Pricing
Python Academy · Aula

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 Engine sustenta tudo por meio de create_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

  1. SQLAlchemy Core versus ORM
  2. Definição de modelos
  3. Consultas com a Session
  4. Relacionamentos e junções
← Voltar para Python Academy