
Last Updated on 14 October 2019 by Roberto De Pedrini
Flask is a fantastic and very light Python framework for creating powerful web applications and is an excellent tool for creating your own websites in a dynamic and interactiv
e way. With this technique you can create interesting application integrations on Ibm-I, even on versions antecedent to 7.X. The m
ost famous python framework for building a web application is django, but with flask you can immediately get excellent results and modernize management processes with new applications that take advantage of current technologies such as boostrap, jquery, etc.
In this article I illustrate a simple example to understand the basic structure of the application and its potential.
Index
Requirements
- Python version 3.X.
- Python packages: Flask, Pypyodbc, Waitress.
- Ibm-I operating system from 5.X.
- Driver odbc Ibm-I following the instructions from the following link (to have an Ibm accoun
t) https://github.com/IBM/ibmi-oss-examples/blob/master/odbc/odbc.md
Flask python application
This is the heart of the python program in which the engine of the html page is made through the python flask framework.
The “render_template” is all that the server renders in the form of html and the “route” renders the name of the page to insert in the url of the browser.
from flask import Flask, render_template from tkISeries import tkISeries app = Flask (__ name__) @ app.route ('/ articles', methods = ('GET', 'POST')) def articles (): iseries = tkISeries () iseries.connection () rows = iseries.selectArticoli (iseries.c1) return render_template ('/ articolo.html', len = len (rows), lenr = len (rows)[0], rows = rows)
IBM-I connection
This is an example of the python class for the connection to the database and the select for column return, instantiated by the main application. The python packa
ge “pypyodbc” and the odbc Ibm driver are the prerequisites for the connection and the execution of the desired sql specifications.
mainapp.py import pypyodbc class tkISeries (): def init (self): super (tkISeries, self) .init () def connection (self): # xxx.xxx.xxx.xxx Ip Ibm-I user = Ibm-I user password = Ibm-I user password connection = pypyodbc.connect (driver = '{iSeries Access ODBC Driver}', system = 'xxx.xxx.xxx.xxx' uid = 'user', pwd = 'password') self.c1 = connection.cursor () def selectArticles (self, c1): # LIBRARY = IBM-I library name, FILE = Table name string = ("select cdar, dsar, dssa, umba, decimal (csbc, 11,2) from LIBRERIA.FILE") try: c1.execute (string) row = c1.fetchall () except Exception as e: print ("error") return row
Html
The html code contains links to boostrap and jquery to perform a search on the page.
Delimiters in braces {% ….%} express instructions (for, if, ..).
Delimiters in braces {{…}} express the variables.

Http server
Using a simple wsgi python server named waitress:
To run the application run the following command: python waitress_server.py.
The IP address to be entered in the browser corresponds to the machine where the http server was launched (pc, Windows server, Linux server, ..) A
t this point it is sufficient to type in the browser the address http: // ip_address: 8080 / articles and you will see the final result!
waitress_server.py from waitress import serves import mainapp serve (mainapp.app, host = '0.0.0.0', port = 8080)
Final results
Jquery javascript searches all HTML. The boostrap classes make the html page responsive and modern.
… .And now have fun and space for creativity.
