Showing posts with label python cgi programming. Show all posts
Showing posts with label python cgi programming. Show all posts

Sunday, August 16, 2015

A Combination of Both Python CGI and Database Programming

Python CGI can be helpful to get data from a form and insert it into a database. So, a combination of both the CGI programming and a little bit of database programming can help us to create and maintain a small web based database. See the example below -

Lets start with creating a form. In the form action you can see that I have called a python cgi file and use th method post. Always store the CGI file in the cgi-bin folder. Then we have created a text entry for username label and another for password level. We use the submit button to call the cgi file.
It will create a form like below - 
<html>
<link rel="stylesheet" type="text/css" href="new1.css">
<head>
<title>Login Page</title>
<head>
<h1> Welcome to The Gate Pass Entry System</h1>
<h2>Please enter username and password to access the system</h2>
<body>
<form action='/cgi-bin/formvalidator.py' method='POST'>
<label>Username: </label>
<input type='text' name='username'><br><br/>
<label>Password:  </label>
<input type="Password"  name='password' ><br/><br/>
<input type='submit' value=submit>
</form>
</body>
</html>

 The Output will be something like below -


The next thing we have to do is to handle the input from the form and get data from it ;then we will insert the data to a database. Lets do it -

#!/Python27/python  (#!/usr/bin/python - in case of linux)
import cgi,cgitb
cgitb.enable() #This will show errors in the browser
data=cgi.FieldStorage() #The Fieldstorage function allow us to get data from form.
username=str(data['username'].value) #getting the value of the name='username'  field
password=str(data['password'].value) #getting the value of the name='password' field


Now the data collection part is covered up, as we can see we have two variables username and password which are holding the inputs from the HTML form. Now lets put them in database. Please visit http://pythonbeginner.in/databaseprogramming if you have not done a bit of database programming with python.We will crate a table named login_list and put the data there.

import sqlite3 as db #You should import this in the first or second line of the program.
conn=db.connect('test1.db') #Connecting to database named test1.db
cur=conn.cursor()
cur.execute('drop table if exists login_list')
cur.execute("CREATE TABLE login_list (uniqueid integer primary key AUTOINCREMENT,usernameTEXT,password TEXT);")
conn.commit()
cur.execute('insert into troublebook(username,password) values(?,?)',(username,password))
conn.commit()
So, what the program actually did? It took the variables username and password and inserted into the login_list table for storing. It is basically a table for entering username and password but not verifying it. What if we need to verify if it is in the database and if not found then insert the value in the list. 
Hint: The 'select * from table' is used to have the entire table as output. Can we use it here ? Obviously. but how, let's find out and stay tuned for the next blog entry.

Now lets traverse the list with the help of database and generate a HTML page on your browser showing all username and password. 

import sys,cgi,cgitb
import sqlite3 as db
conn=db.connect('test1.db')
query='select * from login_list'
cur.execute(query)
rows=cur.fetchall()
sys.stdout.write("Content-type: text/html\r\n\r\n")
sys.stdout.write("")
sys.stdout.write("<html><body><h1>Login List :</h1><p>")
for row in rows:
   print ("_________________________________________________________<br/>\n")
   print ("\n")

   sys.stdout.write("ID No : %s <br>Name :%s <br>Password : %s" % (row[0], row[1], row[2]))
   sys.stdout.write("<br/>")
  
sys.stdout.write("</p></body></html>")


This will list the whole login_list database and place it in your web browser with a suitable format.You can use another program or another link to run this, the main thing i the concept of the CGI must be cleared now, as we will be moving to more complex structure of the cgi programming.
  

Feautured Post

Python Trivia Post: enumerate()

Python has a very useful inbuilt function, which is called enumerate(). This is needed whenever you need the numbering of a certain element...