[pyar] Python - Django - select_related

Dirección de carreras de Sistemas dirsistemas en ucp.edu.ar
Mar Mayo 31 07:08:27 ART 2016


El may. 30, 2016 10:46, "Jose Luis" <joseluiszanotti en gmail.com> escribió:
>
> Actualización...
>
> usando este RAW bajo de 1,9 segundos a 170ms la respuesta :D
>
> @staticmethod
> def get_context_data(self, request):
>     product_info = []
>     category_id = request.GET['category_id']
>     main_products = ProductMain.objects.raw(
>         'SELECT A.id, A.name, A.model, A.status, D.price, D.stock from
products_productmain A '
>         'INNER JOIN products_product B on A.id = B.product_main_id '
>         'INNER JOIN ( SELECT product_id, MAX(id) as var_id FROM
products_productvariation GROUP BY product_id ) as C '
>         'on B.id = C.product_id '
>         'INNER JOIN products_productvariation D on D.id = C.var_id '
>         'WHERE A.main_category_id = ' + category_id
>     )

Yo me preguntaba una y otra vez porque no hacer una query SQL. Claro, no
conozco Python y si conozco SQL :-)

Como respondieron otros, NUNCA, pero NUNCA, concatenar strings para queries
SQL. SIEMPRE parámetros.

Lo "malo" de usar SQL crudo, es que dependiendo del motor, algunas queries
pueden ser válidas y otras no. Pero en una amplia mayoría de los casos, eso
no sucede. Sobretodo si se es elegante al escribir el SQL (bah, si tu
modelo relacional subyacente también está construido adecuadamente).

Bueno, me salió casi un OT.

Saludos!!

Sergio
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20160531/208b1ca6/attachment-0001.html>


Más información sobre la lista de distribución pyar