03 - Open Source03d - Python

Costruire WEB-APP IBM i con Python-Flask

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à.

Prequisiti

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à.

Related Posts
DB2 for i SQL – Stringhe – POSSTR-LOCATE-LOCATE_IN_STRING (IT)

Introduzione Spesso, nelle nostre applicazioni, abbiamo la necessità di lavorare con le stringhe di testo e l'SQL del DB2 può Read more

DB2 for i & SQL – FAQ & Howto (Part. 1) (IT)

Database DB2 e SQL ... forse lo strumento più potente e completo che abbiamo sulla piattaforma IBM i: ecco una Read more

Annuncio IBM i 7.4

Arriva direttamente con l'uovo di Pasqua questo annuncio IBM per le novità della versione IBM i 7.4, versione iNext secondo Read more

Generated Always Columns – Approfondimenti (IT)

Introduzione "Generated Always Column": sono colonne, campi, di una tabella il cui contenuto è controllato direttamente dal sistema ... e Read more

About author

Project manager, consulente aziendale gestionale, sviluppo applicazioni con Rpgfree , Python, JavaScript. Sono entrato nel mondo IT quando è nato l'As400 , sono un sostenitore della piattaforma Ibm-I e delle sue enormi potenzialità e credo nelle risorse offerte dalla comunità dell'open source. Sono grato di collaborare con FAQ400 perchè condivido pienamente gli obiettivi.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *