this is a program that i have, i dont know why it doesnt work. Could some one help me? thank you very much
#!c:\Python24\python.exe
# Fig. 35.22: fig35_22.py
# A program to illustrate Python's database connectivity.
import MySQLdb
print "Content-type: text/html"
print
print """
<html xmlns = "http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en">
<head><title>Select Author</title></head>
<body style =
font-family: Arial, sans-serif; font-size: 11pt">"""
try:
connection = MySQLdb.connect(host = "localhost", user = "student", passwd = "student", db = "books")
except OperationalError:
print "Unable to connect to database: %s" % message
else:
cursor = connection.cursor()
cursor.execute( "SELECT * from Authors" )
authorList = cursor.fetchall()
cursor.close() # close cursor
connection.close() # close connection
print """
<form method = "post" action = "/cgi-bin/fig35_23.py">
<select name = "authorID">"""
for author in authorList:
print """<option value = %d>%s, %s</option>""" \
% ( author[ 0 ], author[ 2 ], author[ 1 ] )
print """
</select>
<input type = "submit" value = "Execute Query" />
</ form>"""
print """</body></html>"""
i get an error at OperationalError. It says OperationalError is undefined. now if i take out OperationalError it wont work because of the line......%s" % message inside that try and catch function. Now if i take those two codes then i will get it to have the drop down list but there is nothing in that drop down list. This is the code i have
#!c:\Python24\python.exe
# Fig. 35.22: fig35_22.py
# A program to illustrate Python's database connectivity.
import MySQLdb
print "Content-type: text/html"
print
print """
<html xmlns = " <a href="http://www.w3.org/1999/xhtml">http://www.w3.org/1999/xhtml</a> " xml:lang="en"
lang="en">
<head><title>Select Author</title></head>
<body style =
font-family: Arial, sans-serif; font-size: 11pt">"""
try:
connection = MySQLdb.connect(host = "localhost", user = "root", passwd = "student", db = "books")
except:
print "Unable to connect to database: "
else:
cursor = connection.cursor()
cursor.execute( "SELECT * from Authors" )
authorList = cursor.fetchall()
cursor.close() # close cursor
connection.close() # close connection
print """
<form method = "post" action = "/cgi-bin/fig35_23.py">
<select name = "authorID">"""
for author in authorList:
print """<option value = %d>%s, %s</option>""" \
% ( author[ 0 ], author[ 2 ], author[ 1 ] )
print """
</select>
<input type = "submit" value = "Execute Query" />
</ form>"""
print """</body></html>"""
I'm using pythong to connect to mysql. here is my table structure for books database
create table authors(
authorID char(3),
firstName varchar(20),
lastName varchar(20)
insert into authors values('1','Harvey','Deitel');
insert into authors values('2','Paul','Deitel');
insert into authors values('3','Temn','Nieto');
insert into authors values('4','Kate','Steinbuhler');
insert into authors values('5','Sean','Santry');
insert into authors values('6','Ted','Linn');
insert into authors values('7','Praveen','Sadhu');
insert into authors values('8','David','McPhie');
insert into authors values('9','Cheryl','Yaeger');
insert into authors values('10','Marina','Zlatkina');
insert into authors values('11','Ben','Wiedernann');
insert into authors values('12','Jonathan','Liperi');
pleaze help me. thank you very much.
);
then in the end it should have a drop down list that contains
id, fname, lname like this
1, Harvey, Deitel
2,.....................
plz help me the error i got now from error log in apache is
" File "C:/Programfiles/Apache2.2/cgi-bin/fig35_22.py", line 41\r
[Thu Oct 19 22:24:18 2006] [error] [client 111.1.1.0] print """
I keep reading that MySQL is hard to program with, no matter what computer language you use. Hope you find someone familiar with MySQL.
> what is wrong with the code.
Several things, actually. What is the stray quote doing in:
font-family: Arial, sans-serif; font-size: 11pt"> ?
But I suspect the real problem is here: print """<option value = %d>%s, %s</option>""" \
% ( author[ 0 ], author[ 2 ], author[ 1 ] )
You are treatingauthor[ 0 ] like an integer (with the %d format) but your table definition lists it as a char(3), and you are (correctly) inserting string values. Ergo, a quick switch from %d to %s should solve the problem. I was able to get the form generated properly, including the "Execute Query" button.
I have had only good experiences combining Python (2.4+) and MySQL (5.0+). SQL can be a pain sometimes but the MySQL.com newbie forum has always been helpful to me, for well-phrased questions.