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

发布于 2021-01-29 17:57:42

我通过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。请帮助我!

关注者
0
被浏览
41
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

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

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

    因此,您需要这样做:

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


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看