Okay, trying this again with everything working and no ValueError orWhy are you dynamically creating getpic20.py?
any other errors, here we go:
Load this code. Unless you use a similar login() script, you will want
to edit your own values into the user, passwd, db and host:
#!/usr/bin/python
import MySQLdb
import sys,os
sys.path.append(os.getcwd())
from login import login
user, passwd, db, host = login()
pic = "pic1"
w = 20
x = 0
d = 6
y = 1
getpic = "getpic" + str(w) + ".py"
try:
os.remove(getpic)
except:
pass
code = """
#!/usr/local/bin/python
import cgitb; cgitb.enable()
import MySQLdb
import cgi
import sys,os
sys.path.append(os.getcwd())
from login import login
user, passwd, db, host = login()
form = cgi.FieldStorage()
picid = int(form["id"].value)
x = int(form["x"].value)
pics =
{1:'pic1',2:'pic1_thumb',3:'pic2',4:'pic2_thumb',5 :'pic3',6:'pic3_thumb',7:'pic4',8:'pic4_thumb',\
9:'pic5',10:'pic5_thumb',11:'pic6',12:'pic6_thumb' }
pic = pics[x]
db = MySQLdb.connect(host, user, passwd, db)
cursor= db.cursor()
sql = "select %s from products where id='%s';" % (pic, str(picid))
cursor.execute(sql)
content = cursor.fetchall()[0][0].tostring()
cursor.close()
print 'Content-Type: image/jpeg'
print content
"""
script = open(getpic, "w")
script.write(code)
script.close()
and then surf to:
http://whatever.url/getpic20.py?id=6&x=1
Also, please re-send the link on how to post good questions to the
list. I cannot find it.
TIA,
Victor
Obviously, in the real script, you probably have several of them:
getpic1.py, getpic2.py, etc., but is there any reason you couldn't just
have one getpic.py, and pass the number in as a parameter in your GET
request, like this:
http://localhost/getpic.py?id=6&x=1&w=20
Then you can just have a static getpic.py. I've stripped out useless
bits:
* You don't use sys or os, so why import them?
* MySQL makes it difficult for me to replicate your behavior, because I
don't have your DB setup. The DB call has been replaced with a
dictionary of keys into JPG data, pulled from the filesystem. Change
filenames to jpegs on your own hard drive
* login is useless without MySQL.
So your new getpic.py (statically created) looks like this:
~~~ getpic.py ~~~
#!/usr/local/bin/python
import cgitb; cgitb.enable()
import cgi
pics = {
1: open('pic.jpg').read(),
2: open('pic2.jpg').read()
}
# you could just pass the filename, and then you wouldn't have to load
the
# image data in advance, but this more closely mimics the concept of
your DB
# setup.
form = cgi.FieldStorage()
x = int(form["x"].value)
pic = pics[x]
print 'Content-Type: image/jpeg'
print pic
~~~
Then if you want to include your pictures in a web page, you do
~~~ show_pics.html ~~~
<html>
<head><title>Pictures</title></head>
<body>
<h1>pictures</h1>
<img src='http://example.com/getpic.py?x=1'/>
<img src='http://example.com/getpic.py?x=2'/>
</body>
</html>
~~~
This should work just as well when you refactor the script to pull from
the database.
Hope this helps. Also, the article on asking good questions is
available here: http://catb.org/~esr/faqs/smart-questions.html