Python错误:需要整数参数

0 投票
3 回答
5604 浏览
提问于 2025-04-15 13:08

我这里做错了什么呢?

 i = 0
 cursor.execute("insert into core_room (order) values (%i)", (int(i))

错误信息:

 int argument required

数据库字段是一个整数类型(int(11)),但我觉得这里的 %i 可能导致了错误。

更新:

这是一个更详细的例子:

time = datetime.datetime.now()
floor = 0
i = 0

尝试执行以下代码: booster_cursor.execute('insert into core_room (extern_id, name, order, unit_id, created, updated) values (%s, %s, %s, %s, %s, %s)', (row[0], row[0], i, floor, time, time,)) 如果出现异常,就打印出错误信息:

错误信息:

  (1064, "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'order, unit_id, created, updated) values ('99', '99', '235', '12', '2009-07-24 1' at line 1")

3 个回答

1

我认为,execute()函数的第二个参数应该是一个可迭代的对象。也就是说,如果是这样的话,你需要把:

(int(i))

改成:

(int(i),)

这样才能把它变成一个元组。

1

你可能应该用 ? 来代替 %i。另外,你还缺少一个括号。

cursor.execute("insert into core_room (order) values (?)", (int(i),))
4

有两件事。首先,使用 %s 而不是 %i。其次,参数必须放在一个元组里,所以你需要写成 (i,)(注意 i 后面要有个逗号)。

另外,ORDER 是一个关键字,如果你把它当作字段名使用的话,应该加上转义。

撰写回答