我已经获得了一些我正在研究的测试代码。在单独的HTML文件中,按钮onclick事件获取页面的URL并将其作为变量(jquery_input)传递给此python脚本。 Python然后擦除URL并识别两个数据,然后将其格式化并连接在一起(产生变量lowerCaseJoined)。此连接变量在MySQL数据库中具有相应的条目。对于db中的每个条目,都有一个关联的.gif文件。
从这里开始,我尝试做的是打开与MySQL服务器的连接,并根据db查询连接变量以获取相关的.gif文件。
完成此操作后,我想将.gif文件作为警告打印在网页上。
如果我取出代码的db部分(连接,查询),代码运行就好了。此外,我成功地能够通过Python shell独立执行代码的db部分。但是,当整个代码驻留在一个文件中时,单击按钮时没有任何反应。我已经系统地删除了与db连接相关的代码行,我的代码开始在第一行停止(db = MySQLdb.connection ...)。所以看起来,一旦我开始尝试连接到数据库,程序就会变成kaput。
以下是代码:
#!/usr/bin/python
from bs4 import BeautifulSoup as Soup
import urllib
import re
import cgi, cgitb
import MySQLdb
cgitb.enable() # for troubleshooting
# the cgi library gets the var from the .html file
form = cgi.FieldStorage()
jquery_input = form.getvalue("stuff_for_python", "nothing sent")
# the next section scrapes the URL,
# finds the call no and location,
# formats them, and concatenates them
content = urllib.urlopen(jquery_input).read()
soup = Soup(content)
extracted = soup.find_all("tr", {"class": "bibItemsEntry"})
cleaned = str(extracted)
start = cleaned.find('browse') +8
end = cleaned.find('</a>', start)
callNo = cleaned[start:end]
noSpacesCallNo = callNo.replace(' ', '')
noSpacesCallNo2 = noSpacesCallNo.replace('.', '')
startLoc = cleaned.find('field 1') + 13
endLoc = cleaned.find('</td>', startLoc)
location = cleaned[startLoc:endLoc]
noSpacesLoc = location.replace(' ', '')
joined = (noSpacesCallNo2+noSpacesLoc)
lowerCaseJoined = joined.lower()
# the next section establishes a connection
# with the mySQL db and queries it
# using the call/loc code (lowerCaseJoined)
db = MySQLdb.connect(host="localhost", user="...", "passwd="...",
db="locations")
cur = db.cursor()
queryDb = """
SELECT URL FROM locations WHERE location = %s
"""
cur.execute(queryDb, lowerCaseJoined)
result = cur.fetchall()
cur.close()
db.close()
# the next 2 'print' statements are important for web
print "Content-type: text/html"
print
print result
任何想法我做错了什么?
我是编程新手,所以我确信在这里可以改进很多。但在改进之前,我只想让这件事发挥作用!
答案 0 :(得分:0)
我弄明白了这个问题。似乎我在db连接线的密码部分之前有引号。事情现在都很好。