[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