Python MySQLdb问题(TypeError:%d格式:需要一个数字,而不是str)

use*_*975 60 python mysql-python insertion

我正在尝试执行以下插入操作:

cursor.execute("""
                    insert into tree (id,parent_id,level,description,code,start,end)
                    values (%d,%d,%d,%s,%s,%f,%f)
                    """, (1,1,1,'abc','def',1,1)
                    )
Run Code Online (Sandbox Code Playgroud)

我的MYSQL表的结构是:

id int(255),
parent_id int(255),
level int(11),
description varchar(255),
code varchar(255),
start decimal(25,4),
end decimal(25,4)
Run Code Online (Sandbox Code Playgroud)

但是,当我运行我的程序时,我收到错误

"文件"/usr/lib/pymodules/python2.6/MySQLdb/cursors.py",第151行,执行查询=查询%db.literal(args)

TypeError:%d format:需要一个数字,而不是str"

Kei*_*ith 147

格式字符串实际上不是普通的Python格式字符串.您必须始终使用%s所有字段.

  • 该死.我浪费了三个小时试图理解为什么`%d`导致错误.. (7认同)
  • 让我免于浪费几个小时!! 非常感谢你 !有没有其他方法来处理准备好的陈述?因为这似乎不是一个准备好的陈述可以这么说. (3认同)
  • 您必须始终对所有字段使用%s。这句话最实用 (2认同)