[Python] Psycopg2 e serializzazione delle SELECT in JSON

Daniele Varrazzo piro a develer.com
Gio 16 Ott 2014 17:01:08 CEST


On 2014-10-16 15:55, Alberto Granzotto wrote:
> Chiedo venia, avrei potuto risparmiarti una mail, non avevo capito il
> funzionamento del GROUP BY nella query, ci sono arrivato dopo che GROUP 
> BY
> 1, 2 č equivalente a GROUP BY u.id, u.name :)
> 
> Grazie per tutte le indicazioni, ora che mi hai mostrato che a) si puņ 
> fare
> b) come si fa ho tutte le informazioni necessarie per divertirmi!

Buon divertimento, fammi sapere: mi incuriosisce sempre quando qualcuno 
usa psycopg in maniera un po' piu' spinta.

N.B. nella query che abbiamo discusso, se un utente non ha nessuna 
email, viene restituita una cosa un po' bruttina: una lista con un'email 
con tutti i campi a null, almeno giudicando il risultato:

     test=> insert into users (name) values ('foo');
     INSERT 0 1
     test=> select u.id, u.name, array_agg((e.id, e.email)::t_email) from 
users u left join emails e on u.id = e.user_id group by 1,2;
      id |  name   |                        array_agg
     
----+---------+----------------------------------------------------------
       1 | alberto | 
{"(1,alberto a example.org)","(2,alberto a lemonparty.org)"}
       2 | daniele | {"(4,piro a officine)","(5,piro a develer)"}
       3 | foo     | {"(,)"}

Sei in grado di modificare la query in maniera da restituire un array 
vuoto se un utente non ha nessuna email (che psycopg convertirebbe in 
una lista vuota)?

-- Daniele


Maggiori informazioni sulla lista Python