提问者:小点点

从MySQL表中提取一行


我试图根据用户输入获取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显示为我期望的列表?


共1个答案

匿名用户

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 --------^