TypeError:格式字符串python mysq的参数不足

2024-10-01 02:34:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我想用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。在


Tags: and代码inpyexecutesql错误line
2条回答

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

您需要解压缩行元组

评论后编辑: 您可以用两种方法解包元组:

python3:(*row, categoriesWithFeedback),它将产生所需的结果。在

Python2:foo, bar = row。这将把“CS”分配给foo param,201分配给bar param。在查询中传递它,如(foo, bar, categoriesWithFeedback)

我就是这样解决的

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

相关问题 更多 >