Pergunta

No meu trabalho atual, usamos iBATIS por meio de Java para CRUD em nossos bancos de dados.Gosto das qualidades abstratas da ferramenta, especialmente quando se trabalha com bancos de dados legados, pois ela não impõe sua própria sintaxe a você.

Estou procurando um análogo do Python para esta biblioteca, já que o site só possui versões Java/.NET/Ruby disponíveis.Não quero ter que mudar para Jython se não precisar.

Existem outros projetos semelhantes à funcionalidade iBATIS para Python?

Foi útil?

Solução

iBatis sequestra o SQL DML (ou as definições do SQL) em um arquivo XML.Ele se concentra especificamente no mapeamento entre o SQL e algum modelo de objeto definido em outro lugar.

SQL Alchemy pode fazer isso - mas não é realmente uma solução muito completa.Assim como o iBatis, você pode apenas ter definições de tabelas SQL e um mapeamento entre as tabelas e as definições de classe Python.

O que é mais completo é ter uma definição de classe que seja também a definição do banco de dados SQL.Se a definição de classe gerar o DDL da Tabela SQL, bem como o DML de consulta e processamento, isso será muito mais completo.

Eu alterno entre o SQLAlchemy e o Django ORM.SQLAlchemy pode ser usado de maneira semelhante ao iBatis.Mas prefiro tornar o design do objeto central e deixar a implementação SQL derivada dos objetos pelo conjunto de ferramentas.

Eu uso SQLAlchemy para projetos grandes, em lote e independentes.Cargas de banco de dados, conversões de esquema, relatórios DW e similares funcionam bem.Nestes projetos, o foco está na visão relacional dos dados, não no modelo de objeto.O SQL gerado pode ser movido para procedimentos armazenados PL/SQL, por exemplo.

Eu uso Django para aplicações web, explorando seus recursos ORM integrados.Você pode, com um pouco de trabalho, segregar o Django ORM do resto do ambiente Django.Você pode fornecer configurações globais para vincular seu aplicativo a um banco de dados específico sem usar um módulo de configurações separado.

Django inclui vários relacionamentos comuns (chave estrangeira, muitos para muitos, um para um) para os quais ele pode gerenciar a implementação SQL.Ele gera definições de chave e índice para o banco de dados anexado.

Se o seu problema for amplamente orientado a objetos, com o banco de dados sendo usado para persistência, então a camada ORM quase transparente do Django tem vantagens.

Se o seu problema for amplamente relacional, com a central de processamento SQL, então a capacidade de ver o SQL gerado no SQLAlchemy tem vantagens.

Outras dicas

Talvez o suporte SQLAlchemy SQL Expression seja adequado.Veja o documentação.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top