query¶
Per leggere il database l’oggetto Table offre il metodo query
che costruisce l’oggetto SqlQuery usando tutta una serie di parametri, tra i quali:
columns
where
order_by
group_by
limit
distinct
che vanno spezzare il classico statement SQL SELECT in blocchi. In ognuno dei blocchi possiamo far riferimento ai nomi dei campi o a delle variabili: sarà possibile indicare le colonne con il $, le colonne in relazione con la @, e le variabili custom con i :.
La sintassi della query
è la seguente:
myquery = clienti_tbl.query(columns="$ragione_sociale",
where='$provincia = :prov',
order_by='$n_fatture',
prov='MI')
print (myquery.sqltext)
SELECT t0."ragione_sociale" AS "ragione_sociale",
t0.id AS pkey
FROM fatt."fatt_cliente" AS t0
WHERE (t0."provincia" = :prov) AND (t0."__del_ts" IS NULL)
ORDER BY ( ( SELECT COUNT(*) AS "COUNT___"
FROM fatt."fatt_fattura" AS t0_t0
WHERE (t0_t0."cliente_id"=t0."id") ) )
Si noti che il metodo query
si limita a creare l’oggetto SqlQuery, ma non eseguirà la query in sé per restituire il risultato. Per questo è necessario fare un passo successivo, ovvero richiederne l’output
Parametri:
Nome parametro |
Tipo |
Descrizione |
---|---|---|
where |
T |
Permette di indicare la condizione «where» che individuerà i record oggetto della query (es: where=”$id=#THIS.id”) |
pkey |
T |
Alternativamente alla where permette di fornire una pkey come criterio di ricerca (es: pkey=medico_id) |
columns |
T |
Permette di indicare le colonne da restituire come risultato dell’interrogazione (es: columns=”$fattura_id,$protocollo,$cliente_id”) |
for_update |
B |
Se impostato a True il risultato della query sarà predisposto per la modifica tramite un’operazione di update (es: for_update=True) |
excludeDraft |
B |
Di default True, se impostato a False permette di includere nei risultati gli status «Bozza» (es: excludeDraft=False) |
excludeLogicalDeleted |
B |
Di default True, se impostato a False permette di includere nei risultati i record archiviati o eliminati (es: excludeDraft=False) |
order_by |
T |
Permette di ordinare i risultati della query sulla base del parametro indicato (es: order_by=”$fatturato_totale DESC”) |
group_by |
T |
Permette di raggruppare i risultati della query sulla base di un determinato criterio (es: group_by=”$cliente_id”) |
limit |
L |
Permette di limitare i risultati della query ai primi n risultati (es: limit=10) |
offset |
L |
Il contrario di limit, permette di escludere i primi n elementi indicati (es: offset=5) |
addPkeyColumn |
B |
Di default True, permette di aggiungere automaticamente la colonna “pkey” ai risultati della query, indipendentemente dalle “columns” indicate (es: addPkeyColumn=False) |
Autore della sezione: Davide Paci