Personal tools

Sep 27, 2012

Te lo do io il DB! (aka "Come pubblicare query SQL su Plone")

Vi hanno mai chiesto di pubblicare dati da un database relazionale su Plone? E di modificare al volo le query? Con redturtle.sqlcontents diventa semplice!

Non di rado capita che mi venga richiesto di pubblicare su un sito Plone dati provenienti da un database relazionale o di fornire uno strumento che consenta questa operazione.

La richiesta tipica è quella di pubblicare con Plone il risultato di una query SQL che il cliente desidera gestire in autonomia.

Per questo scopo nasce redturtle.sqlcontents, un prodotto per Plone 3 e Plone 4 che aggiunge due nuovi tipi di contenuto (archetype) per la gestione di questo caso d'uso.

I due tipi di contenuto sono la "Cartella SQL" (SQLFolder) e la "Query SQL" (SQLQuery).

Cartelle SQL

sqlfolder_edit.png

Un oggetto di tipo SQLFolder è una normale cartella Plone a cui è stata aggiunta una stringa di connessione ad una base di dati.

E' possibile connettersi a qualsiasi base di dati gestita da SQLAlchemy e il prodotto è stato testato con successo appoggiandosi ai seguenti database:

  • MySQL
  • Oracle
  • PostgreSQL
  • Sqlite

Come specificato oltre, è una buona pratica utilizzare una connessione aperta in sola lettura per colloquiare con il proprio DB server.

Query SQL

sqlquery_edit.png

All'interno di Cartelle SQL è possibile aggiungere delle Query SQL.

La query verrà eseguita sfruttando la connessione al database definita nella cartella SQL contenitore di questo oggetto.

La prima parte della maschera di configurazione di questo oggetto è dedicata ai dati da pubblicare con questo oggetto.

Poiché le colonne di un database, di norma, hanno nomi pensati per i programmatori e non per possibili lettori dei contenuti della tabella, è possibile rimappare i nomi delle colonne con etichette più fruibili per il proprio bacino d'utenza.

E' inoltre possibile controllare la paginazione delle righe e inserire, prima e dopo i risultati della nostra query, del testo formattato a nostro piacimento.

Il risultato finale che otterremo sarà simile a questo:

sqlquery_view.png

Attenzione

Da un grande potere derivano grandi responsabilità (Zio Ben)

redturtle.sqlcontents lascia grande libertà e flessibilità all'utilizzatore finale, e ci si aspetta che questi sappia gestire tale potere.

Prima di utilizzare redturtle.sqlcontents, vi invito a riflettere su questi punti:

  1. la versione corrente di redturtle.sqlcontents non dispone di alcun filtro sulla query che viene inserita: i contenuti di tipo "Query SQL" devono essere pertanto gestiti da persone competenti
  2. per instaurare le connesioni al DB, è opportuno utilizzare utenti che abbiano permessi di solo lettura
  3. redturtle.sqlcontents non è disegnato per gestire blob o record di grandi dimensioni
  4. al momento non sono impostati timeout particolari, per cui se la connessione alla sorgente di dati si blocca o è particolarmente lenta e dispendiosa, il vostro sito potrebbe subire rallentamenti o addirittura bloccarsi.

Conclusioni

Grazie a redturtle.sqlcontents chi ha esperienza con la gestione di database relazionali può approcciarsi al mondo Plone sfruttando fin da subito, in maniera efficace, le proprie competenze.

comments powered by Disqus