mod_python

Steve Holden steve at holdenweb.com
Sun Nov 6 12:38:14 EST 2005


Little wrote:
> I have created the following database but the following errors occur
> when trying to execute the code.
> 
> html source:
> <html>
> <body>
>     Click here to display information from Chocolate menu:
> <form action ="form.py/display" method="POST">
>     <p>
>     Press to view the display
>     <input type="submit">
>     </p>
> </form>
> <br>
>     Please provide data for chocolate to be added:
> <p>
> <form action ="form.py/addchocolate" method="POST">
>     <p>
>     Name:        <input type="text" name="z_Name" maxlength="30"><br>
>     Rating:      <input type="text" name="z_rating" maxlength="3"><br>
>     Price :      <input type="text" name="z_price" maxlength="5"><br>
>     <input type="submit">
>     </p>
> </form>
> </body>
> </html>
> 
> form.py source
> 
> import MySQLdb
> 
> def addchocolate(z_Name, z_rating, z_price):
> 
>     # make sure the user provided all the parameters
>     if not (z_Name and z_rating and z_price):
>         return "A required parameter is missing, \
>                please go back and correct the error"
>     db =
> MySQLdb.connect(host="localhost",user="hayward",passwd="hayward",db="hayward")
>     cursor = db.cursor()
>     cursor.execute(
>     """INSERT INTO InventoryList (artist, title, rating) VALUES (%s,
> %s, %s)""", (z_Name, z_rating, z_price) )
>     db.commit()
>     cursor.close()
>     db.close()
> 
> def display(rating):
>     db =
> MySQLdb.connect(host="localhost",user="hayward",passwd="hayward",db="hayward")
>     cursor = db.cursor()
>     cursor.execute("""SELECT * FROM InventoryList""")
>     result = cursor.fetchall()
>     cursor.close()
>     db.close()
>     parsesongs(result)
>     return
> 
> def parsesongs(rawstring):
>     print 'Chocolate Inventory'
>     print
> '---------------------------------------------------------------'
>     print 'Name                       Rating
> Price  '
>     print
> '---------------------------------------------------------------'
>     for i in range (0, len(rawstring)):
>         table = ''
>         Name = rawstring[i][0]
>         table = table + Name
>         for j in range (0, (29 - len(Name))):
>             table = table + ' '
>         Rating = rawstring[i][1]
>         table = table + Rating
>         for k in range (0, (29 - len(Rating))):
>             table = table + ' '
>         Price = str(rawstring[i][2])
>         table = table + Price
>         print table
>     print
> '---------------------------------------------------------------'
>     return
> 
> errors that occur
> press display:
> Mod_python error: "PythonHandler mod_python.publisher"
> 
> Traceback (most recent call last):
> 
>   File "/usr/lib/python2.3/site-packages/mod_python/apache.py", line
> 193, in Dispatch
>     result = object(req)
> 
>   File "/usr/lib/python2.3/site-packages/mod_python/publisher.py", line
> 173, in handler
>     result = apply(object, (), args)
> 
> TypeError: display() takes exactly 1 argument (0 given)
> 
> press the addition of the items:
> Mod_python error: "PythonHandler mod_python.publisher"
> 
> Traceback (most recent call last):
> 
>   File "/usr/lib/python2.3/site-packages/mod_python/apache.py", line
> 193, in Dispatch
>     result = object(req)
> 
>   File "/usr/lib/python2.3/site-packages/mod_python/publisher.py", line
> 173, in handler
>     result = apply(object, (), args)
> 
>   File
> "/home/hayward/public_html/Homework/Python_Executable_Publisher/form.py",
> line 11, in addchocolate
>     cursor.execute(
> 
>   File "/usr/lib/python2.3/site-packages/MySQLdb/cursors.py", line 137,
> in execute
>     self.errorhandler(self, exc, value)
> 
>   File "/usr/lib/python2.3/site-packages/MySQLdb/connections.py", line
> 33, in defaulterrorhandler
>     raise errorclass, errorvalue
> 
> OperationalError: (1054, "Unknown column 'artist' in 'field list'")
>  
> Thanks for the help
> 
It's a while since I used mod_python, so this is a guess: The publisher 
module finds function arguments in the POST input stream. Since your 
form field is called "z_rating", publisher fails to find a "rating" 
argument to pass to the function.

The second error message seems to imply that the database InventoryList 
table doesn't have a column called "article".

regards
  Steve
-- 
Steve Holden       +44 150 684 7255  +1 800 494 3119
Holden Web LLC                     www.holdenweb.com
PyCon TX 2006                  www.python.org/pycon/




More information about the Python-list mailing list