我想用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。
答案 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))