[Python] Applicazione WEB con Python e Postgresql

Daniele Varrazzo piro a develer.com
Mar 23 Set 2014 17:51:20 CEST


On 2014-09-23 16:29, Marco De Paoli wrote:

> Pippo.objects.exclude(Q(alias__isnull=True) | Q(alias__exact=''))
>
> devo ammettere che a volte anche a me risulterebbe pił immediato 
> scrivere:
>
> SELECT * FROM app_pippo WHERE alias IS NOT NULL AND alias != ''
>
> (per non parlare dei casi di join!)

Esatto: appena la query diventa un po' meno sui binari l'autore 
dell'orm comincia a tirarti dietro tutte le feature del mondo per far 
vedere che puoi usare il suo programma in tutti i casi possibili, ma poi 
se devi a imparare quelle e a combinarle tra loro, non e' meglio 
direttamente scrivere l'SQL? Da questo punto di vista trovo comodissimo 
Manager.raw:

     Pippo.object.raw("""
         select p.* from pippo
         JOIN WHERE FILTER SET-RETURNING-FUNCTIONS 
RECURSIVE-COMMON-TABLE-EXPRESSION
         limit 42""")

che ti tira fuori i model a partire da qualunque cosa sei capace di 
tirare al database, in caso la tua query produca oggetti. Che resta un 
sottoinsieme limitato delle query possibili ("select nome, count(*) from 
pippo group by 1" non produce pippi).

-- Daniele

P.S. SELECT * FROM app_pippo WHERE coalesce(alias, '') != '' - altra 
cosa che vagliela a spiegare, a django...



Maggiori informazioni sulla lista Python