我有一个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 :(得分:8)
传递给execute
的sql参数必须位于元组或列表中,即使只有其中一个参数。这在documentation中注明:
对于位置变量绑定,第二个参数必须始终为a 序列,即使它包含单个变量。记得那个 Python需要一个逗号来创建单个元素元组:
所以你需要这样做:
ip ="127.0.0.1"
sql="select count(*) from radacct where nasipaddress=%s"
cur.execute(sql, (ip,))