Last Updated on 14 Ottobre 2019 by Roberto De Pedrini
Flask è un framework di Python fantastico e davvero leggero per creare potenti web application ed è un ottimo strumento per creare i propri siti web in modo dinamico ed interattivo.
Con questa tecnica si possono creare delle integrazioni applicative interessanti su Ibm-I , anche su versioni antecedenti alla 7.X.
Il framework più famoso di python per costruire applicazione web è django, però con flask si possono da subito ottenere risultati eccellenti e modernizzare i processi gestionali con nuove applicazioni che sfruttano le tecnologie attuali quali boostrap, jquery, ecc.
In questa articolo illustro un esempio semplice per comprendere la struttura di base dell’applicazione e le sue potenzialità.
Index
Prequisiti
- Python versione 3.X.
- Pacchetti Python: Flask, Pypyodbc, Waitress.
- Sistema operativo Ibm-I dalla 5.X .
- Driver odbc Ibm-I seguendo le istruzioni dal seguente link (dotarsi di un account Ibm )
https://github.com/IBM/ibmi-oss-examples/blob/master/odbc/odbc.md
Applicazione flask python
Questo è il cuore del programma python nel quale avviene l’engine della pagina html attraverso il framework flask di python.
Il “render_template” è tutto ciò che il server rende sotto forma di html e il”route” rende il nome della pagina da inserire nell’url del browser.
from flask import Flask, render_template from tkISeries import tkISeries app = Flask(__name__) @app.route('/articoli', methods=('GET', 'POST')) def articoli(): iseries=tkISeries() iseries.connection() rows=iseries.selectArticoli(iseries.c1) return render_template('/articoli.html', len = len(rows), lenr = len(rows[0]), rows=rows)
Connessione IBM-I
Questa è un esempio della classe python per l’esecuzione della connessione al database e della select per il ritorno delle colonne, istanziata dall’applicazione principale.
Il pacchetto python “pypyodbc” e il driver odbc Ibm sono i prerequisiti per la connessione e l’esecuzione delle specifiche sql desiderate.
mainapp.py import pypyodbc class tkISeries(): def init(self): super(tkISeries, self).init() def connection(self): #xxx.xxx.xxx.xxx Ip Ibm-I user=utente Ibm-I password=password utente Ibm-I connection = pypyodbc.connect(driver='{iSeries Access ODBC Driver}', system='xxx.xxx.xxx.xxx',uid='user',pwd='password') self.c1 = connection.cursor() def selectArticoli(self,c1): #LIBRERIA=Nome libreria IBM-I, FILE=Nome tabella stringa=("select cdar, dsar, dssa, umba, decimal(csbc,11,2) from LIBRERIA.FILE ") try: c1.execute(stringa) row = c1.fetchall() except Exception as e: print ("error") return row
Html
Il codice html contiene i collegamenti a boostrap e jquery per eseguire una ricerca nella pagina.
I delimitatori tra parentesi graffe {%….%} esprimono istruzioni(for,if,..).
I delimitatori tra parentesi graffe {{…}} esprimono le variabili.
Server Http
Utilizzo un semplice server wsgi python di nome waitress:
Per eseguire l’applicazione lanciare il seguente comando : python waitress_server.py.
L’indirizzo ip da inserire nel browser corrisponde alla macchina dove è stato lanciato il server http (pc,server Windows, server Linux,..)
A questo punto è sufficiente digitare nel browser l’indirizzo http://indirizzo_ip:8080/articoli e si vedrà il risultato finale!
waitress_server.py from waitress import serve import mainapp serve(mainapp.app, host='0.0.0.0', port=8080)
Risultato finale
Il javascript di jquery esegue la ricerca su tutto l’html. Le classi boostrap rendono la pagina html responsive e moderna.
….ed ora buon divertimento e spazio alla creatività.
1 Comment