我使用Python编程CGI并发现CGI以一个名为FieldStorage的类的形式将信息传递给Python。我遇到的类FieldStorage的主要属性是从表单字段中获取数据的“getvalue”。是否有可能获得该字段的id值?
修改
我想知道我是否可以获得有关表单发送数据的一些独特信息。这是因为,我有一个表单和2个脚本。我的表单,我把项目详细信息然后一个脚本1获取该数据并将其保存在数据库中。我有另一个脚本2,它查询保存的项目数据,创建一个表单并使用数据填充表单以启用编辑项目,在用户编辑后,数据将更新回数据库。
更新回db是问题所在。我想使用脚本1进行更新,但在这种情况下我不会INSERT INTO ...我会做更新Table1 ...现在,我怎么知道哪个请求是编辑或更新。我这样做是因为在表单有70个字段并创建另一个脚本的情况下,只需要添加更新逻辑来复制script1。 这就是我想用脚本
做的script1.py
#!/usr/bin/env python
import cgi
import cgitb; cgitb.enable() # for troubleshooting
import MySQLdb
form = cgi.FieldStorage()
#there are 70 fields
id = form.getfirst("id");
error = form.getfirst("error");
comment = form.getfirst("comment");
product_name = form.getfirst("product_name");
verified_product_name = form.getfirst("verified_product_name");
url = form.getfirst("url");
verified_url= form.getfirst("verified_url");
.
.
.
source = form.getfirst("source");
print 'Content-type: text/html\r\n\r'
print '<html>'
print 'Update Successfull ! !'
print '</html>'
db = MySQLdb.connect(host="localhost", user="root", passwd="", db="products")
cursor = db.cursor()
sql=""
### Check the request---How do i do this?
if update: ##if the request is for updating
sql = """UPDATE item SET (id=id, error=error, comment=comment, product_name=product_name, verified_product_name=verified_product_name, url=url, verified_url=verified_url, image_url=image_url,..., source=source)"""
else: ##if the request is for inserting
sql = """INSERT INTO item (id, error, comment, product_name, verified_product_name, url, verified_url, image_url, verified_image_url, brand, verified_brand, type, verified_type, price, min_price, max_price, verified_price,..., source) VALUES ('%s', '%s', "%s", '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s',..., '%s')""" %(id, error, comment, product_name, verified_product_name, url, verified_url, image_url, verified_image_url, brand,..., source)
try:
cursor.execute(sql,(id, error, comment, product_name, verified_product_name, url, verified_url, image_url, verified_image_url, brand, verified_brand, type, verified_type, price, min_price, max_price, verified_price, measure_unit, ..., source))
db.commit()
except Exception as err:
db.rollback()
db.autocommit(True)
cursor.execute(sql)
cursor.fetchall()
db.close()
希望你得到我的问题。我是否可以在不创建另一个脚本的情况下单独进行更新?