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

psycopg2如何处理TypeError:不是在格式化字符串时转换所有参数

司徒焕
2023-03-14
问题内容

我通过psycopg2有一个简单的数据库查询,但是我不知道为什么它总是在这里显示错误

ip ="127.0.0.1"
 sql="select count(*) from radacct where nasipaddress=%s"
 cur.execute(sql,ip)

然后它将显示

TypeError:并非在字符串格式化期间转换了所有参数

如果我以这种方式尝试

cur.execute("select count(*) from radacct where nasipaddress=%s" % ip)

它仍然无法正常工作

我如何以正确的方式将参数传递给psycopg2。请帮助我!


问题答案:

您传递给的sql参数execute必须位于一个元组或列表中,即使只有一个。在文档中对此进行了说明:

对于位置变量绑定,即使第二个参数包含一个变量,它也必须始终是一个序列。请记住,Python需要逗号来创建单个元素元组:

因此,您需要这样做:

ip ="127.0.0.1" 
sql="select count(*) from radacct where nasipaddress=%s"
cur.execute(sql, (ip,))


 类似资料:
  • 程序应该接受两个名称,如果它们的长度相同,它应该检查它们是否是相同的单词。如果是同一个单词,它将打印“名称相同”。如果它们长度相同但字母不同,则会打印“名称不同但长度相同”。我遇到问题的部分在最后4行。 运行此代码时,它会显示: 非常感谢您的任何建议。

  • 问题内容: 这是输出。我相信这些是utf-8字符串…其中一些可以是NoneType,但在类似这样的字符串之前会立即失败… TypeError:格式字符串的参数不足 虽然是7比7? 问题答案: 请注意,格式化字符串的语法已过时。如果您的Python版本支持它,则应编写: 这也可以修复您碰巧遇到的错误。

  • 我必须将传入的参数值转换为存储库接口所需的格式,是否可以这样做。我的域类, 和我的存储库界面, 在这里,我必须使用Java的getTime()方法将传入日期字符串转换为时间。是否可以在不使用控制器的情况下实现这一点,并且我对从客户端发送不感兴趣,因为可能会出现时区问题。 我的转换器: 在这里我必须使用,获取/测试/搜索/测试?名称=xx 虽然POST和GET,我已经转换传入和传出字符串使用Json

  • 问题内容: 我正在通过这样的套接字接收字符串 我想将其转换回数组。我尝试使用 但是它将数组内的数组分割开。 我将如何将字符串转换为数组? 问题答案: 使用比。从文档: 31.2。ast —抽象语法树¶ 安全地评估表达式节点或包含Python表达式的字符串。提供的字符串或节点只能由以下Python文字结构组成:字符串,数字,元组,列表,字典,布尔值和无。 这可用于安全地评估包含来自不受信任来源的Py

  • 问题内容: 我知道这是一个非常简单的问题,但我不知道该如何使用Google。 我能怎么做 那要用两次?我假设我必须“命名” the ,然后在参数中使用字典,但是我不确定正确的语法吗? 仅供参考,我知道我可以在参数中使用两次,但这不是重点:) 问题答案: 在Python 2.6+和Python 3中,您可以选择使用较新的字符串格式设置方法。 这样可以避免重复输入参数,或者 如果要命名参数。 这是严格

  • 问题内容: 是否可以使用Python的语法仅替换某些键。 考虑以下示例: 哪个返回 有没有办法做到这一点? 问题答案: 我使用了一个更简单的解决方法: 可以使用dict中的更多键轻松扩展此功能,即使搜索字符串不存在也不会抱怨。可能会进行改进以提供更多的功能,但这对我来说已经足够了。