2009-07-20 17 views
21

Qualcuno ha utilizzato SQLAlchemy in aggiunta all'ORM Django?SQLAlchemy e Django, è pronto per la produzione?

Mi piacerebbe utilizzare l'ORM di Django per la manipolazione di oggetti e SQLalchemy per query complesse (come quelle che richiedono join esterni a sinistra).

È possibile?

Nota: sono a conoscenza di django-sqlalchemy ma il progetto non sembra pronto per la produzione.

risposta

17

Che cosa farei,

  1. definire lo schema in Django orm, lasciarlo scrivere il db via syncdb. Ottieni l'interfaccia di amministrazione.

  2. In view1 è necessario un complesso join

 

    def view1(request): 
     import sqlalchemy 
     data = sqlalchemy.complex_join_magic(...) 
     ... 
     payload = {'data': data, ...} 
     return render_to_response('template', payload, ...) 
 
6

Non penso che sia una buona pratica utilizzare entrambi. Si debbono:

  1. ORM e utilizzare SQL personalizzato Usa Django dove di Django built-in generazione SQL non soddisfa le vostre esigenze, o
  2. Usa SQLAlchemy (che vi dà un controllo più preciso al prezzo di complessità) e, se necessario, utilizzare uno strato dichiarativo come Elixir per semplificare la vita.

Ovviamente, se è necessario l'amministratore di Django, è consigliabile il primo di questi approcci.

+2

Potresti spiegare perché non è una buona pratica usare entrambi? –

+5

Non è una regola dura e veloce - di solito non ha senso avere due componenti in un sistema che fanno la stessa cosa. È fattibile, ovviamente. Molto dipende dal fatto che si tratti di un'applicazione per hobby, dimensioni del team di sviluppo ecc. –

4

Jacob Kaplan-Moss ha ammesso di digitazione "importazione sqlalchemy" di tanto in tanto. Potrei scrivere un adattatore di queryset per i risultati di sqlalchemy in un futuro non troppo lontano.

6

L'ho già fatto e va bene. Utilizzare la funzione SQLAlchemy in cui è possibile leggere nello schema in modo da non dover dichiarare i campi due volte.

È possibile prendere le impostazioni di connessione dalle impostazioni, l'unico problema è roba simile ai diversi tipi di driver Postgres (ad esempio con psyco e senza).

Ne vale la pena perché la roba SQLAlchemy è molto più bella per cose come i join.

2

Al giorno d'oggi è possibile utilizzare Aldjemy. Prendi in considerazione l'utilizzo di questo tutorial.

Problemi correlati