Python错误:需要整数参数
我这里做错了什么呢?
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
是一个关键字,如果你把它当作字段名使用的话,应该加上转义。