[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