我在这里做错了什么?
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")
答案 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),))