Domanda

Nel mio lavoro attuale, utilizziamo iBATIS tramite Java per CRUD i nostri database.Mi piacciono le qualità astratte dello strumento, soprattutto quando si lavora con database legacy, poiché non impone la propria sintassi.

Sto cercando un analogo Python a questa libreria, poiché sul sito sono disponibili solo le versioni Java/.NET/Ruby.Non voglio dover passare a Jython se non ne ho bisogno.

Esistono altri progetti simili alla funzionalità iBATIS disponibili per Python?

È stato utile?

Soluzione

iBatis sequestra l'SQL DML (o le definizioni dell'SQL) in un file XML.Si concentra specificamente sulla mappatura tra SQL e alcuni modelli di oggetti definiti altrove.

SQL Alchemy può farlo, ma in realtà non è una soluzione molto completa.Come iBatis, puoi semplicemente avere definizioni di tabelle SQL e una mappatura tra le tabelle e le definizioni di classe Python.

La cosa più completa è avere una definizione di classe Anche la definizione del database SQL.Se la definizione della classe genera il DDL della tabella SQL nonché il DML di query ed elaborazione, il risultato è molto più completo.

Faccio il flip-flop tra SQLAlchemy e Django ORM.SQLAlchemy può essere utilizzato in modo simile a iBatis.Ma preferisco rendere centrale la progettazione degli oggetti e lasciare che l'implementazione SQL venga derivata dagli oggetti dal set di strumenti.

Utilizzo SQLAlchemy per progetti batch e autonomi di grandi dimensioni.I carichi DB, le conversioni di schemi, i report DW e simili funzionano bene.In questi progetti il ​​focus è sulla visione relazionale dei dati, non sul modello a oggetti.L'SQL generato può essere spostato, ad esempio, nelle procedure memorizzate PL/SQL.

Utilizzo Django per applicazioni web, sfruttando le sue funzionalità ORM integrate.Puoi, con un po' di lavoro, separare Django ORM dal resto dell'ambiente Django.Puoi fornire impostazioni globali per associare la tua app a un database specifico senza utilizzare un modulo di impostazioni separato.

Django include una serie di relazioni comuni (Foreign Key, Many-to-Many, One-to-One) per le quali può gestire l'implementazione SQL.Genera definizioni di chiavi e indici per il database collegato.

Se il tuo problema è in gran parte orientato agli oggetti, con il database utilizzato per la persistenza, allora il livello ORM quasi trasparente di Django presenta dei vantaggi.

Se il tuo problema è in gran parte relazionale, con l'elaborazione SQL centrale, allora la capacità di vedere l'SQL generato in SQLAlchemy presenta dei vantaggi.

Altri suggerimenti

Forse il supporto SQL Expression di SQLAlchemy è adatto.Vedi il documentazione.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top