我试图根据用户输入获取MySQL表的一行。 我的代码是:
"""Get entry information"""
reinforcement_name = reinforcement_input.get()
"""Fetch reinforcement data"""
mycursor = mydb.cursor()
sql_select_query = "select '*' from reinforcement where name = '%s'"
mycursor.execute(sql_select_query, reinforcement_name)
reinforcement_data = mycursor.fetchone()
print(reinforcement_data)
我希望获得特定用户输入的列条目列表。 但是,我打印的是none
,而不是列表。
如何使我的repressement_data
显示为我期望的列表?
FetchOne
调用可以。 问题在于您的查询--当您使用参数化查询时,不应该在绑定变量周围使用引号--这些不是简单的字符串替换,而是数据库驱动程序处理的绑定变量。 在这里,您查询的是一个文字名称为%s
的行,它可能不存在。 参数需要传递给execute
作为迭代。
另外,您还应该删除选择列表中*
周围的引号,否则,您将得到星号文字,而不是所有列。
sql_select_query = "select * from reinforcement where name = %s"
# No quotes --------------^-^-------------------------------^--^
mycursor.execute(sql_select_query, (reinforcement_name,))
# Params passed as a tuple --------^