Introduzione

Le colonne «virtuali» sono speciali tipi di colonne calcolate in tempo reale al caricamento della pagina. Esse non contengono quindi valori «veri» nel database, ma valori calcolati esclusivamente su richiesta per operazioni di vario tipo.

Ci riferiamo a:

Le colonne virtuali sono individuabili nel model come segue:

self.db.table('fatt.cliente').model.virtual_columns.keys()

['__protecting_reasons',
 '__is_protected_row',
 '__invalid_reasons',
 '__is_invalid_row',
 'rsociale_upper',
 'etichetta',
 'n_fatture',
 'tot_fatturato',
 'provincia_nome',
 'regione_sigla',
 'regione_nome',
 'zona',
 'provv_calc',
 '__allowed_for_partition']

È importante osservare che normalmente le Operazioni di lettura restituiscono come risultato soltanto le colonne «vere», a meno che non vengano specificatamente richieste le colonne di tabelle in relazione (nelle interrogazioni di tipo query e readColumns ) oppure non venga specificato il parametro virtual_columns (nelle interrogazioni di tipo record ).

Ad esempio, per richiedere una formulaColumn all’interno di una query è possibile richiedere esplicitamente la colonna:

myquery = clienti_tbl.query(columns="*,$n_fatture",
                         where='$provincia = :prov',
                         order_by='$n_fatture',
                         prov='MI')

Suggerimento

Si noti che come valore di columns abbiamo scritto *,$n_fatture: con questa notazione comunichiamo al motore sottostante che vogliamo ricevere tutte le colonne «vere» del record (rappresentate per l’appunto dall’asterisco) e, in aggiunta, anche la colonna $n_fatture

In alternativa è possibile «staticizzare» le colonne virtuali, in sede di definizione delle colonne, con l’attributo static=True. In questo caso a ogni Interrogazione così come in ogni Trigger la colonna sarà sempre disponibile per la lettura


Allegati:

Autore della sezione: Davide Paci