我想用python收集每个人的专题成绩。我一个一个地得到每个人的分数。为此,我编写了如下SQL代码。行来自easrlier sql result,它打印主题和课程,显示如下
('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的错误是
Traceback (most recent call last): File "C:\wamp\www\MLWebsite\website\new.py", line 85, in cursor.execute(sqlgrade, (row, categoriesWithFeedback)) File "C:\Python27\Lib\site-packages\pymysql\cursors.py", line 163, in execute query = self.mogrify(query, args) File "C:\Python27\Lib\site-packages\pymysql\cursors.py", line 142, in mogrify query = query % self._escape_args(args, conn) TypeError: not enough arguments for format string
有人能帮我解决这个错误吗?如果没有解决方案,我不想使用sqlparse。在
查询有3个占位符,传递参数的方式接收到2个,因为}。在
row
参数仍然是元组。 第二个参数(row, categoriesWithFeedback)
实际上是(("CS", "201"), "someOtherValue")
,而不是{您需要解压缩行元组
评论后编辑: 您可以用两种方法解包元组:
python3:
(*row, categoriesWithFeedback)
,它将产生所需的结果。在Python2:
foo, bar = row
。这将把“CS”分配给foo param,201分配给bar param。在查询中传递它,如(foo, bar, categoriesWithFeedback)
我就是这样解决的
相关问题 更多 >
编程相关推荐