[pyar] [Django] Optimizacion de queries y configuración de Apache

Tordek kedrot en gmail.com
Mie Nov 16 16:13:04 ART 2011


Hasta ahora la mejor solución que se me ocurrió es buscar los IDs
llamando directamente a la DB, y después hacer

novedades = Articulos.objetos.select_related().filter(pk__in=ids)

que al menos es 2 queries en vez de 9.

2011/11/14 Tordek <kedrot en gmail.com>:
> Hola, lista:
>
> Tengo una consulta que, en Symfony/Doctrine, podía hacer fácilmente mediante
> queries Raw, pero parece que Django no me deja:
>
> Tengo un modelo Articulo, y Coleccion tiene muchos Articulos.
>
> Quiero seleccionar, para cada Coleccion, el último Articulo (según su
> Volumen, si lo tiene). Lo hago así:
>
>    novedades = Articulos.objects.raw("""
>       SELECT a.*
>       FROM articulos a
>       JOIN (SELECT b.idColeccion, max(b.volumen) vol
>             FROM articulos b
>             GROUP BY b.idColeccion) arts
>           ON (a.idColeccion = arts.idColeccion AND a.volumen <=> arts.vol)
>       ORDER BY a.idarticulo DESC
>       LIMIT 8
>       """)
>
> El problema es que, después, en la vista, tengo que leer la colección
> correspondiente a cada articulo, y esto significa n+1 queries, donde en
> Symfony lo hacía con sólo 1. ¿Se puede?
>
> Por otro lado...
>
> Quiero subir este sitio a Dreamhost, que usa Passenger, mientras que en mi
> máquina local uso mod_wsgi. ¿Cómo puedo configurar mod_wsgi para que, cuando
> llega una request, se fije si existe el archivo en DIRECTORIO/public, y si
> no, le pase la request a Django, que tiene su script en
> DIRECTORIO/passenger_wsgi.py.
>
> Saludos!
>
> --
> Guillermo O. «Tordek» Freschi. Programador, Escritor, Genio Maligno.
> http://tordek.com.ar :: http://twitter.com/tordek
>



More information about the pyar mailing list