.. _orm_genropy/orm_genropy/lettura: Operazioni di lettura ===================== .. toctree:: :maxdepth: 1 :hidden: :titlesonly: query/query.rst selection record_readcolumns Sulla :ref:`Table` è possibile eseguire una serie di operazioni di lettura e scrittura. Vediamo innanzitutto le operazioni di lettura: - per la lettura di più record, la :ref:`query` o la :ref:`selection` - per la lettura di un solo elemento, la :ref:`record e readColumns` L'interrogazione viene condotta sulla tabella dalla quale si desidera estrarre un risultato. Possono essere introdotti come parametri una serie di condizioni (``where`` o ``condition``) o in alternativa una serie di ``pkeys``. Inoltre è possibile passare nei *kwargs* anche degli altri parametri come condizioni. Interrogazioni su colonne in relazione -------------------------------------- Una delle peculiarità dell'ORM di Genropy è che propone di effettuare le interrogazioni dal "punto di vista" di una table di partenza e di poter tuttavia accedere a **tutti i campi del database** che da quella tabella sono "raggiungibili" **attraverso** quello che chiamiamo **path_relazionale**. Possiamo riferirci a colonne in relazione sia **all'interno del parametro** ``column`` che all'interno del parametro ``where``: è possibile utilizzare le colonne della tabella con il simbolo **$**, nonché le colonne delle tabelle in relazione con il simbolo **@**, mentre le variabili utilizzate nel parametro where iniziano sempre con **:** e si riferiscono a ulteriori parametri passati a piacere al metodo usato per l'interrogazione. Il meccanismo di traduzione dell'ORM creerà le clausole di *JOIN* necessarie per leggere e testare queste colonne. :: rel_query = clienti_tbl.query(columns='$ragione_sociale,@provincia.@regione.nome AS regione', limit=5) rel_query.sqltext SELECT t0."ragione_sociale" AS "ragione_sociale", t2."nome" AS regione, t0.id AS pkey FROM fatt."fatt_cliente" AS t0 LEFT JOIN glbl."glbl_provincia" AS t1 ON t1."sigla" = t0."provincia" LEFT JOIN glbl."glbl_regione" AS t2 ON t2."sigla" = t1."regione" WHERE (t0."__del_ts" IS NULL) LIMIT 5 L'alternativa all'utilizzo dei *path relazionali* all'interno dei metodi di interrogazione è l'utilizzo di `Colonne virtuali `_: si rimanda alla sezione dedicata per ulteriore approfondimento. .. parametri da sistemare: distinct=None, offset=None, having=None, relationDict=None, sqlparams=None, subtable=None, ignoreTableOrderBy=False, ignorePartition=False, locale=None, mode=None, _storename=None, checkPermissions=False, aliasPrefix=None, joinConditions=None .. raw:: html
**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) | +------------------------+------+--------------------------------------------------+ .. raw:: html
**Allegati:** - `Genropy ORM - Operazioni di lettura (JNotebook) `_ - `Genropy ORM - Operazioni di lettura (HTML) `_ .. sectionauthor:: Davide Paci