In out last post we covered how to add a new record to the MySQL database. In this post will add to the previous and show you how to delete a record from the database.
First of all we are going to add 2 new columns to our datasheet below:

This will allow us to delete the row we’ve selected:
“http://pythoninhtmlexamples.com/files/med/providers_delete_form_mysql.py?id=14&action=delete”
Notice the “action=delete” parameter.
So basically we will click the link and pass the “action=delete” parameter back to the page. Then we’ll use that value to determine what action we will take.
#Python has no switch case statement
if action == 'edit':
if action == 'delete':
delete_values(arg)
if action == 'create':
If the action is delete then we call the delete_values procedure, passing the record id to the procedure.
def delete_values(id):
conn = MySQLdb.connect('localhost',USERNAME,PASSWORD,DB)
cursor = conn.cursor()
sql="DELETE FROM tblProviders WHERE prv_id=" + id
cursor.execute(sql)
print "****************RECORD DELETED****************"
# Close the connection
conn.close()
Here is all the code so far:
#!/usr/bin/python
print "Content-type: text/html\n\n"
print "<html>"
print "<head>"
print "<title>Delete Provider</title>"
print "</head>"
print "<body>"
#GLOBAL VARIABLES
USERNAME = 'username'
PASSWORD = 'password'
DB = 'database'
import MySQLdb
import os
# Import modules for CGI handling
import cgi, cgitb
def init():
#read the query params
params = os.environ.get('QUERY_STRING')
findthis="="
#find if there is an equal sign in the query param
#use int to convert the variable to a number from a text value
intEquals = int(params.find(findthis))
#test for queryparam or first time you have arrived
if intEquals > -1:
#RECORD ALREADY EXISTS
#------------------------------------------------------------------------------------
#["id"] - just selects the "id" parameter, but the [0] selects the actual value
arg = cgi.parse_qs( params )["id"][0]
#["action"] - just selects the "action" parameter, but the [0] selects the actual value
action = cgi.parse_qs( params )["action"][0]
#------------------------------------------------------------------------------------
#Python has no switch case statement
if action == 'edit':
sql = "SELECT * FROM tblProviders WHERE prv_id=" + arg
print sql
print '<br>'
print '<br>'
if action == 'delete':
#sql="DELETE FROM tblProviders WHERE prv_id=" + arg
delete_values(arg)
if action == 'create':
#print 'create the new record.<br>'
form = cgi.FieldStorage()
# Get data from fields
if form.getvalue('fname'):
fname = form.getvalue('fname')
else:
fname = "Not set"
if form.getvalue('city'):
city = form.getvalue('city')
else:
city = "Not set"
insert_values(fname,city)
#read the values from the database
fname=''
city=''
print "<form action = 'providers_delete_form_mysql.py' method = 'post'>"
print "<table width='100%' border='0px' bgcolor=lightgreen>"
print "<tr>"
print "<td><strong>First Name:</strong></td>"
print "<td><input type = 'text' name = 'fname' value='" + fname + "'></td>"
print "</tr>"
print "<tr>"
print "<td><strong>City:</strong></td>"
print "<td><input type = 'text' name = 'city' value='" + city + "'></td>"
print "</tr>"
print "<tr>"
print "<td><input type = 'submit' value = 'Edit' /></td>"
print "</tr>"
print "</table>"
print "</form>"
show_table()
else:
#CREATE THE NEW RECORD ONLY IF THE ACTION IS CREATE
print "New Record...."
#default values
fname=''
city=''
print "<form action = 'providers_delete_form_mysql.py?id=0&action=create' method = 'post'>"
print "<table width='100%' border='0px' bgcolor=lightgreen>"
print "<tr>"
print "<td><strong>First Name:</strong></td>"
print "<td><input type = 'text' name = 'fname' value='" + fname + "'></td>"
print "</tr>"
print "<tr>"
print "<td><strong>City:</strong></td>"
print "<td><input type = 'text' name = 'city' value='" + city + "'></td>"
print "</tr>"
print "<tr>"
print "<td><input type = 'submit' value = 'Submit' /></td>"
print "</tr>"
print "</table>"
print "</form>"
show_table()
def delete_values(id):
conn = MySQLdb.connect('localhost',USERNAME,PASSWORD,DB)
cursor = conn.cursor()
sql="DELETE FROM tblProviders WHERE prv_id=" + id
cursor.execute(sql)
print "****************RECORD DELETED****************"
# Close the connection
conn.close()
def insert_values(firstname,cty):
conn = MySQLdb.connect('localhost',USERNAME,PASSWORD,DB)
cursor = conn.cursor()
#Python will handle the escape string for apostrophes and other invalid SQL characters for you
sql = "INSERT INTO tblProviders (prv_FirstName,prv_City) VALUES (%s, %s)"
cursor.execute(sql, (firstname, cty))
print '**************Record Added**************'
# Close the connection
conn.close()
def show_table():
print '<br><br>'
print "<a href='http://pythoninhtmlexamples.com/files/med/providers_delete_form_mysql.py'>Add New Record</a>"
print '<br><br>'
conn = MySQLdb.connect('localhost', USERNAME,PASSWORD,DB)
cursor = conn.cursor()
sql="SELECT * FROM tblProviders ORDER BY prv_ID"
cursor.execute(sql)
# Get the number of rows in the result set
numrows = cursor.rowcount
print "<table width='100%' border='1px'>"
print "<th>Edit</th><th>Delete</th>"
print "<th>First Name</th><th>City</th>"
# Get and display all the rows
for row in cursor:
id = row[0]
print '<tr>'
print '<td>'
print "<a href='providers_delete_form_mysql.py?id=" + str(id) + "&action=edit'>" + str(id) + "</a>" #need to convert the index to a string
print '</td>'
print '<td>'
print "<a href='providers_delete_form_mysql.py?id=" + str(id) + "&action=delete'>" + str(id) + "</a>" #need to convert the index to a string
print '</td>'
print '<td>' + row[1] + '</td>'
print '<td>' + row[2] + '</td>'
print '</tr>'
print '</table>';
# Close the connection
conn.close()
#start here:
init()
print "</body>"
print "</html>"
Here is in action:
http://pythoninhtmlexamples.com/files/med/providers_delete_form_mysql.py