【发布时间】:2018-03-22 13:46:40
【问题描述】:
所以我已经查看了文档和其他问题,但我没有运气。
当我运行 c.execute 并使用值编码的第一个 %s 时,它可以工作。然而,如果我试图让它成为一个变量,我不会得到任何结果。据我了解,我将 use %s 作为占位符,然后将这些变量的列表作为第二个参数传递。我错过了什么吗?在这种情况下,来自 db_connect 的游标是 conn.cursor(cursors.DictCursor) 因为我想要一个结果字典。无论哪种方式,我在 a 或 b 中都没有得到任何结果,但是如果我使用“SELECT * FROM users where username = %s”运行相同的查询,那么我会得到一个结果。
from MySQLdb import escape_string
from db_connect import connection
import gc
def get_user(parameter, value):
c, conn = connection(dict_cursor = True)
data = c.execute("SELECT * FROM users where %s = %s",[escape_string(parameter), escape_string(value)])
data = c.fetchone()
conn.close()
gc.collect()
return data
a = get_user("username","testuser")
b = get_user("email","testuser@icloud.com")
c = get_user("username","doesntexist")
【问题讨论】: