MySQL连接/查询make文件不起作用

时间:2014-05-01 22:51:37

标签: python mysql

我已经获得了一些我正在研究的测试代码。在单独的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

任何想法我做错了什么?

我是编程新手,所以我确信在这里可以改进很多。但在改进之前,我只想让这件事发挥作用!

1 个答案:

答案 0 :(得分:0)

我弄明白了这个问题。似乎我在db连接线的密码部分之前有引号。事情现在都很好。