TypeError:格式字符串python mysql没有足够的参数

时间:2017-12-26 10:37:07

标签: python mysql django

我想用python收集每个人在特殊科目中的成绩。我逐个得到每个人的成绩。出于这个原因,我编写了如下的SQL代码。行来自easrlier sql结果,它打印主题和课程,它显示为

  

('CS','201')

categoriesWithFeedback包含唯一的昵称。我写sql代码,但它不能理解行包含2参数我认为。

sqlgrade = "SELECT `grade` FROM `enrolledtable` WHERE `subject`=%s and `course`=%s and `nickname`=%s"

IE_students.append(categoriesWithFeedback)

cursor.execute(sqlgrade, (row, categoriesWithFeedback))

IEaveragegrades += cursor.fetchone() 

`

Python ERROR就是那个

  

Traceback(最近一次调用最后一次):文件   “C:\ wamp \ www \ MLWebsite \ website \ new.py”,第85行,中       cursor.execute(sqlgrade,(row,categoriesWithFeedback))文件“C:\ Python27 \ Lib \ site-packages \ pymysql \ cursors.py”,第163行,in   执行       query = self.mogrify(query,args)文件“C:\ Python27 \ Lib \ site-packages \ pymysql \ cursors.py”,第142行,in   mogrify       query = query%self._escape_args(args,conn)TypeError:没有足够的格式字符串参数

有人可以帮我解决这个错误吗?如果没有任何解决方案,我不想使用sqlparse。

2 个答案:

答案 0 :(得分:0)

您的查询有3个占位符和传递参数的方式,它接收2,因为row参数仍然是元组。 第二个参数(row, categoriesWithFeedback)实际上是(("CS", "201"), "someOtherValue")而不是("CS", "201", "someOtherValue")

你需要打开行tupple

评论后修改: 您可以通过两种方式解压缩元组:

Python 3:(*row, categoriesWithFeedback)将产生想要的结果。

Python 2:foo, bar = row。这将分配" CS" to foo param和201 to bar param。在(foo, bar, categoriesWithFeedback)

等查询中传递它

答案 1 :(得分:0)

我这样解决

cursor.execute(sqlgrade, (row[0], row[1], categoriesWithFeedback))