0

我在这里做错了什么?

 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

try: 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,)) except Exception, e: print 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")
4

3 回答 3

4

两件事情。首先,使用%s和不使用%i. 其次,参数必须在一个元组中 - 所以你需要(i,)(用逗号后面i)。

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

于 2009-07-24T23:39:41.943 回答
1

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

(int(i))

到:

(int(i),)

使其成为一个元组。

于 2009-07-24T23:40:22.363 回答
1

你应该使用?而不是%i可能。而且您缺少括号。

cursor.execute("insert into core_room (order) values (?)", (int(i),))
于 2009-07-24T23:41:12.783 回答