[Python] Django QuerySets order_by

Daniele Varrazzo piro a develer.com
Ven 3 Ott 2014 20:07:37 CEST


On 2014-10-02 19:04, Paolo Leggio wrote:

> Applicando invece un ordinamento, sorgono i miei problemi:

Qual'e' l'sql generato? Guardandolo potresti capirci qualcosa in piu'.

Non mi ricordo (mai) come fare a visualizzarlo: puoi senz'altro mettere 
un paio di print nei sorgenti di django vicino al cursor.execute(). Ma 
l'ultima volta che l'ho fatto ho notato che c'era un logger apposito che 
si puo' abilitare, quindi in pratica puoi fare cosi': 
http://www.dabapps.com/blog/logging-sql-queries-django-13/ (ovvero, 
prova quello che dice questo tizio, che non l'ho verificato; se non 
funziona greppa i sorgenti e trova qual'e' il logger da abilitare).

Alternativamente puoi usare django-debug-toolbar.

Nota (che riprende il discorso orm buoni, orm cattivi dell'altra volta): 
tutte le volte che ho sviluppato un sito django ho sempre trovato 
*preziosissimo* guardare le query in fase di sviluppo: aiuta a capire se 
per caso si sta incocciando nel problema di prestazioni piu' serio che 
capita usando un ORM ingenuamente: il "ripple loading" 
(http://tinyurl.com/n4ag5gg). Guardando le query scorrere ci si accorge 
subito se un attributo (magari invocato nel template, neanche nella 
view) sta caricando tutti gli oggetti collegati ad un queryset in 
maniera "lazy" (si vedono scorrere 100 query tutte uguali). Con l'ORM di 
django si puo' risolvere con un paio di botte di select_related. Ma 
bisogna accorgersene prima.


-- Daniele



Maggiori informazioni sulla lista Python