ANÚNCIO

~/questoes/programacao

Como o SQLAlchemy se integra com FastAPI na criação de usuários?

Responda, confira o feedback e use o resultado para orientar sua revisão.
Aula de referência FastAPI: Criar conta de usuário, Schemas e Criptografia
Para fixar

Integração SQLAlchemy e FastAPI na Criação de Usuários

Conceito central

SQLAlchemy é uma ORM (Object-Relational Mapping) que funciona como intermediária entre sua aplicação FastAPI e o banco de dados. Ela permite que você defina modelos em Python que representam tabelas, validando e persistindo dados de forma segura e organizada.

Por que essa resposta faz sentido

SQLAlchemy define modelos que mapeiam estruturas Python para tabelas do banco de dados, permitindo que dados já validados pelo Pydantic sejam salvos de forma consistente e segura. O modelo SQLAlchemy trabalha em conjunto com o schema Pydantic: um valida a requisição, outro persiste no banco.

Armadilhas comuns

  • Confundir os papéis: Pydantic valida requisições HTTP, SQLAlchemy persiste dados no banco. São ferramentas complementares, não concorrentes.
  • Esperar que SQLAlchemy faça segurança por conta própria, como hash de senhas. Segurança é implementada no seu código antes de chegar ao modelo.
  • Usar o modelo SQLAlchemy diretamente como resposta HTTP. O ideal é ter um schema Pydantic separado para retornar dados ao cliente, evitando expor campos sensíveis.

Entenda as alternativas

A

SQLAlchemy não gera JWT automaticamente. Tokens JWT são responsabilidade de bibliotecas específicas como python-jose. SQLAlchemy só cuida da persistência de dados no banco de dados.

B

SQLAlchemy não criptografa senhas automaticamente. Essa tarefa pertence a bibliotecas de hashing como passlib ou bcrypt. SQLAlchemy apenas armazena o hash que você fornece. A criptografia deve ser feita antes de chegar ao modelo.

C

Esta é a definição correta. SQLAlchemy mapeia classes Python para tabelas, e cada instância do modelo representa um registro. Ela persiste dados que já foram validados pelo Pydantic, mantendo a integridade do banco.

D

SQLAlchemy não valida requisições HTTP. Essa tarefa é exclusiva do Pydantic na FastAPI. SQLAlchemy trabalha apenas após a validação, quando os dados já chegam ao handler da rota.

Dica prática: Sempre crie dois 'esquemas': um Pydantic para entrada (request) e um para saída (response), e um modelo SQLAlchemy para o banco. Assim você controla exatamente quais dados recebe, como processa e o que retorna, mantendo segurança e flexibilidade.

Revise pensando: Se SQLAlchemy não valida requisições nem criptografa senhas, qual é então sua função principal ao criar um usuário?