Raw Sql vs SqlAlchemy quando Django ORM non è abbastanza

7

In un progetto django, se si verifica una situazione in cui Django ORM non è in grado di eseguire query complesse, ci sono 2 opzioni:

  1. Utilizza query Sql raw

  2. Usa SqlAlchemy

Voglio sapere se ci sono alcune regole come alcuni pro e contro di entrambi che possono guidarmi a scegliere una delle 2 opzioni di cui sopra. O dipende interamente da ciò che ci piace?

    
posta codecool 24.09.2011 - 14:24
fonte

1 risposta

9

ORM

  • Pro Utilizzabile su diversi DBMS senza personalizzazione del codice.
  • Pro semplifica l'integrazione di codice / DB.
  • Pro Controllo di tipo aggiuntivo da ORM / definizioni tabella
  • Pro Facilitare le migrazioni di db.
  • Pro Sostanzialmente un'integrazione DSL per DB.
  • Con Componente aggiuntivo per comprendere (dovresti capire come l'ORM creerà l'SQL)
  • Con Qualsiasi personalizzazione SQL elimina l'usabilità su DBMS diversi.

SQL raw

  • Pro conosci l'SQL utilizzato perché è presente nel codice.
  • Pro Più controllo su SQL e integrazione.
  • Pro Meno complessità (senza ORM).
  • Con Legato a un gusto DBMS di SQL.
  • Con integrazione del codice / DB manuale.

La questione della complessità

Sono sicuro che verrò incantato per questo, MA.

A differenza di molti dei suoi sostenitori, NON penso che gli ORM liberino gli sviluppatori dalla comprensione di SQL. Devi ancora capire SQL perché finirai per occuparti dello SQL creato dall'ORM. Ed ecco perché:

  • Le istruzioni SQL sono in genere una delle prime cose che richiede l'ottimizzazione delle prestazioni in un determinato progetto.
  • Gli ORM sono ancora giovani. Nessuno che conosca implementare un parser SQL effettivo, il che significa che, al di fuori di dichiarazioni banali, l'SQL costruito è spesso inefficiente e in alcuni casi solo sbagliato.

Questo non significa che non si dovrebbe usare un ORM. Possono comunque ridurre la quantità di codice che devi scrivere. Ma dovresti capire che potresti non avere tutti i benefici che pensi di avere.

    
risposta data 24.09.2011 - 18:45
fonte

Leggi altre domande sui tag