psycopg2 how deal with TypeError: not all argument

2019-01-20 13:33发布

问题:

i have a simple database query by psycopg2 but i do not know why it always show errors here is the code

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

then it will show

TypeError: not all arguments converted during string formatting

and if i try in this way

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

it is still not working

how can i pass the parameters to psycopg2 in the correct way.please help me!

回答1:

The sql arguments you pass to execute must be in a tuple or list, even if there's only one of them. This is noted in the documentation:

For positional variables binding, the second argument must always be a sequence, even if it contains a single variable. And remember that Python requires a comma to create a single element tuple:

So you need to do it like this:

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