当前位置: 首页 > 面试题库 >

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

华永新
2023-03-14
问题内容

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

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)
                    )

我的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)

但是,当我运行程序时,出现错误

执行查询=“%db.literal(args)”中的“ File“
/usr/lib/pymodules/python2.6/MySQLdb/cursors.py”,第151行

TypeError:%d格式:必须为数字,而不是str“


问题答案:

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

参考官方文件:

如果args是列表或元组,则%s可用作查询中的 占位符 。如果args是字典,则%(name)s可用作查询中的占位符。

- >那就是:这里%s不是格式化 ,但是 是一个占位符



 类似资料:
  • 以下是尝试使用套接字修改用户提供的输入的代码: 当我执行它并提供输入时,会发生以下错误: 我能做些什么来解决这个问题?

  • 我得到一个“TypeError:需要一个类似字节的对象,而不是'str'”。我在使用StringIO时遇到了一个错误“TypeError:initial_值必须是str或None,而不是bytes”,我在使用Python 3.7。 我也得到这个函数同样的错误。"返回pickle.load(打开(DATA_FILE))"

  • 问题内容: 我需要在数字前加零(总共8位数字)进行显示。我正在使用oracle。 我得到的不是“ 00001011”,而是“ 00001011”。为什么我会得到额外的前导空白?完成此操作的正确数字格式字符串是什么? PS我意识到我可以使用,但是我想更好地理解数字格式。 @Eddie:我已经阅读了文档。但是我仍然不明白如何摆脱领先的空白。 @David:那是否意味着只能使用? 问题答案: 使用FM(

  • 问题内容: 几年前,我正在使用一个先前提出的问题的代码,但是,我认为这已经过时了。尝试运行代码,我收到上述错误。我仍然是Python的新手,因此无法从类似的问题中得到很多澄清。有人知道为什么会这样吗? 追溯 问题答案: 默认情况下返回stdout或stderr流的对象。这意味着您还需要在针对这些对象的操作中使用对象。使用对象。使用字节文字(注意前缀): 或先解码数据(如果您知道所使用的编码)(通常

  • 我试图创建一个程序,在本地机器上打开一个端口,让其他人通过netcat连接到它。我现在的代码是。 我是新的Python和套接字。但是当我运行这段代码时,它将允许我发送一个带有命令的netcat连接: 但是在我的Python脚本中,我得到了c.send的错误: 我基本上只是尝试打开一个端口,允许netcat连接,并在该机器上安装一个完整的外壳。

  • 本文向大家介绍解决scanf_s输入%d%c%d格式错误的问题,包括了解决scanf_s输入%d%c%d格式错误的问题的使用技巧和注意事项,需要的朋友参考一下 例题: 定义变量a,b,c,输入1+2,结果a=1,b=+,c=2 错误实例: 乍一看,没啥问题,但是一运行输入就会报错。 解决方案: 1、使用scanf,上边的代码就没问题 2、如果使用scanf_s,就要加上输入长度,如下 scanf_