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

时间:2014-06-18 18:14:42

标签: python postgresql psycopg2

我有一个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。请帮助我!

1 个答案:

答案 0 :(得分:8)

传递给execute的sql参数必须位于元组或列表中,即使只有其中一个参数。这在documentation中注明:

  

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

所以你需要这样做:

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