Python错误:需要int参数

时间:2009-07-24 23:35:04

标签: python mysql mysql-error-1064

我在这里做错了什么?

 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)value(%s,%s,%s,%s,%s,%s)',(row [0],row [0],我,楼层,时间,时间,))  除了例外,e:         打印e

错误:

  (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 个答案:

答案 0 :(得分:4)

两件事。首先,使用%s而不是%i。其次,参数必须在元组中 - 因此您需要(i,)(在i之后使用逗号)。

此外,ORDER是关键字,如果您将其用作字段名称,则应进行转义。

答案 1 :(得分:1)

我相信execute()的第二个参数应该是一个可迭代的。如果是这种情况,您需要更改:

(int(i))

为:

(int(i),)

将其变成元组。

答案 2 :(得分:1)

您应该使用?代替%i。你错过了一个括号。

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