我正在学习python并遇到了处理Web应用程序的障碍。
我尝试从本地数据库(mariadb)获取数据,当我尝试打印结果时,我看到的只是()
。
此功能从数据库中获取数据:
def getHikeInfo(name):
conn, cursor = getConnectionAndCursor()
cursor.execute("SELECT * FROM hiking WHERE name = %s", [name])
# fetch the results
data = cursor.fetchall()
# clean up
cursor.close()
conn.close()
return data
此代码调用函数:
if 'name' in form:
#unpack into python variable
name=form['name'].value
print name #debug purpose to check name is proper
data = getHikeInfo(name)
print data #prints '()'
else:
data = getAllHikes()
showAllHikes(data)
我尝试了一些改变我将名称连接到将名称作为参数传递的方式的东西,似乎没有任何工作。 该名称100%肯定包含在表中。我似乎无法看出问题所在。
感谢任何帮助。
答案 0 :(得分:-1)
如果您的name
函数的getHikeInfo
参数是字符串,请像这样重写cur.execute
调用:
cursor.execute("SELECT * FROM hiking WHERE name = '%s'"% name)
但是,如果您将列表传递给getHikeInfo
函数,那么您可能必须这样做:
cursor.execute("SELECT * FROM hiking WHERE name IN {}".format(tuple(name)))
因此,您需要重写getHikeInfo
函数,如下所示:
def getHikeInfo(name):
conn, cursor = getConnectionAndCursor()
cursor.execute("SELECT * FROM hiking WHERE name = %s"%name)
#if you're passing in a list for `name` then you would need to use my second suggestion.
# fetch the results
data = cursor.fetchall()
# clean up
cursor.close()
conn.close()
return data
只要您的表包含符合name
参数定义的条件的数据,您就应该能够看到一些结果。
希望它有所帮助。