Python cursor.fetchall()返回空元组

时间:2016-04-24 22:18:38

标签: python sql

我正在学习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%肯定包含在表中。我似乎无法看出问题所在。

感谢任何帮助。

1 个答案:

答案 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参数定义的条件的数据,您就应该能够看到一些结果。

希望它有所帮助。