SQLAlquimia
O kit de ferramentas Python SQL e o mapeador relacional de objetos
Introdução
SQLAlchemy é o kit de ferramentas Python SQL e mapeador relacional de objetos que oferece aos desenvolvedores de aplicativos todo o poder e flexibilidade do SQL. SQLAlchemy fornece um conjunto completo de padrões de persistência de nível empresarial bem conhecidos, projetados para acesso eficiente e de alto desempenho ao banco de dados, adaptados em uma linguagem de domínio simples e Pythonic.
Os principais recursos do SQLAlchemy incluem:
- Um ORM de força industrial, construído a partir do núcleo do mapa de identidade, unidade de trabalho e padrões de mapeamento de dados. Esses padrões permitem a persistência transparente de objetos usando um sistema de configuração declarativo. Os modelos de domínio podem ser construídos e manipulados naturalmente, e as alterações são sincronizadas automaticamente com a transação atual.
- Um sistema de consulta orientado relacionalmente, expondo explicitamente toda a gama de capacidades do SQL, incluindo junções, subconsultas, correlação e quase tudo o mais, em termos de modelo de objeto. Escrever consultas com o ORM usa as mesmas técnicas de composição relacional que você usa ao escrever SQL. Embora você possa usar SQL literal a qualquer momento, isso praticamente nunca é necessário.
- Um sistema abrangente e flexível de carregamento antecipado para coleções e objetos relacionados. As coleções são armazenadas em cache em uma sessão e podem ser carregadas com acesso individual, todas de uma vez usando junções ou por consulta por coleção em todo o conjunto de resultados.
- Um sistema de construção Core SQL e uma camada de interação DBAPI. O SQLAlchemy Core é separado do ORM e é uma camada completa de abstração de banco de dados por si só, e inclui uma linguagem de expressão SQL extensível baseada em Python, metadados de esquema, pool de conexões, coerção de tipo e tipos personalizados.
- Todas as restrições de chave primária e estrangeira são consideradas compostas e naturais. É claro que chaves primárias inteiras substitutas ainda são a norma, mas o SQLAlchemy nunca assume ou codifica esse modelo.
- Introspecção e geração de banco de dados. Esquemas de banco de dados podem ser "refletidos" em uma única etapa em estruturas Python que representam metadados de banco de dados; essas mesmas estruturas podem então gerar instruções CREATE imediatamente - tudo dentro do Core, independente do ORM.
Filosofia do SQLAlchemy:
- Os bancos de dados SQL se comportam cada vez menos como coleções de objetos, quanto mais o tamanho e o desempenho começam a importar; as coleções de objetos se comportam cada vez menos como tabelas e linhas, quanto mais a abstração começa a importar. SQLAlchemy visa acomodar esses dois princípios.
- Um ORM não precisa ocultar o “R”. Um banco de dados relacional fornece funcionalidades ricas e baseadas em conjuntos que devem ser totalmente expostas. O ORM do SQLAlchemy fornece um conjunto aberto de padrões que permitem ao desenvolvedor construir uma camada de mediação personalizada entre um modelo de domínio e um esquema relacional, transformando o chamado problema de "impedância relacional de objeto" em uma memória distante.
- O desenvolvedor, em todos os casos, toma todas as decisões relativas ao design, estrutura e convenções de nomenclatura tanto do modelo de objeto quanto do esquema relacional. SQLAlchemy apenas fornece meios para automatizar a execução dessas decisões.
- Com o SQLAlchemy, não existe "o ORM gerou uma consulta incorreta" - você mantém controle total sobre a estrutura das consultas, incluindo como as junções são organizadas, como as subconsultas e a correlação são usadas, quais colunas são solicitadas. Tudo o que o SQLAlchemy faz é, em última análise, o resultado de uma decisão iniciada pelo desenvolvedor.
- Não use um ORM se o problema não precisar de um. SQLAlchemy consiste em um componente Core e ORM separado. O Core oferece uma linguagem de expressão SQL completa que permite a construção Pythonic de construções SQL que são renderizadas diretamente em strings SQL para um banco de dados de destino, retornando conjuntos de resultados que são essencialmente cursores DBAPI aprimorados.
- As transações devem ser a norma. Com o ORM do SQLAlchemy, nada vai para armazenamento permanente até que commit() seja chamado. SQLAlchemy incentiva os aplicativos a criar um meio consistente de delinear o início e o fim de uma série de operações.
- Nunca renderize um valor literal em uma instrução SQL. Os parâmetros vinculados são usados no maior grau possível, permitindo que os otimizadores de consulta armazenem em cache os planos de consulta de maneira eficaz e eliminando os ataques de injeção de SQL.
Documentação
A documentação mais recente está em:
https://www.sqlalchemy.org/docs/
Instalação/Requisitos
A documentação completa para instalação está em Instalação.
Obtendo ajuda/desenvolvimento/relatório de bugs
Consulte o Guia da Comunidade SQLAlchemy.
Código de Conduta
Acima de tudo, SQLAlchemy dá grande ênfase à comunicação educada, atenciosa e construtiva entre usuários e desenvolvedores. Consulte nosso Código de Conduta atual em Código de Conduta.
Licença
SQLAlchemy é distribuído sob a licença do MIT.