Introduzione

Genropy implementa un proprio ORM (Object-relational mapping), cioè una serie di istruzioni ed uno stile di programmazione che permettono di mettere in comunicazione linguaggio e framework (con i loro paradigmi di programmazione tipicamente ad oggetti e data-driven) con i più comuni e importanti RDBMS (Relational databases).

Vengono così forniti in modo semplice tutti i servizi necessari a gestione e memorizzazione dei dati senza dover conoscere nel contempo le specifiche caratteristiche implementative di ogni RDBMS utilizzato e riconosciuto da Genropy (SQLite, PostgreSQL, MySQL, Microsoft SQL).

In particolare, l’ORM di Genropy consente la definizione del modello interamente in Python, riducendo quindi al minimo la programmazione in altri linguaggi. L’SQL necessario a eseguire operazioni di lettura e scrittura , infatti, è estremamente complesso oltre che laborioso: l’ORM di Genropy permette di rimanere molto vicini dal punto di vista semantico all’SQL originario, semplificando però e alleggerendo notevolmente sia la sintassi sia il processo.

Inoltre, grazie al concetto di path relazionale, è possibile definire in modo logico e funzionale delle relazioni , con conseguente semplificazione di tutto il mondo delle Operazioni di lettura e scrittura : query anche complesse possono essere scritte in pochi istanti con una sintassi assolutamente semplice e senza avere l’appesantimento, anche in termini di prestazioni, che i classici ORM spesso comportano.

L’oggetto db

L’ORM di Genropy ha al suo centro l’oggetto db. A titolo di esempio, proviamo in un qualsiasi terminale a istanziare l’applicativo (l’oggetto GnrApp) passando il nome dell’istanza:

from gnr.app.gnrapp import GnrApp
app = GnrApp('sandboxpg')

Una volta istanziato l’oggetto GnrApp, ci concentriamo sull’oggetto GnrSqlDb, ovvero il mapper corrispondente dal database dell’applicazione:

db = app.db

Nel corso di questo manuale ci occuperemo quindi di analizzare l’architettura di questo oggetto db: vedremo innanzitutto il model , che approfondiremo nella sua suddivisione in Structure e Object , per poi arrivare alle Operazioni di lettura e scrittura sul database.

Autore della sezione: Davide Paci e Danilo Magro