2014-06-18 4 views
3

У меня есть простой запрос к базе данных с помощью psycopg2 , но я не знаю, почему это всегда показывает ошибку здесь кодpsycopg2, как иметь дело с TypeError: не все аргументы преобразуются во строке форматирования

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 в правильном way.please помочь мне!

+0

Возможный дубликат [psycopg2 "TypeError: не все аргументы преобразуются во строки форматирования"] (HTTP://stackoverflow.com/questions/793679/psycopg2-typeerror-not-all-arguments-converted-during-string-formatting) – skrrgwasme

ответ

7

Аргументы sql, которые вы передаете до execute, должны быть в кортеже или списке, даже если есть только один из них. Это отмечено в 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:

Так что вам нужно сделать это следующим образом:

ip ="127.0.0.1" 
sql="select count(*) from radacct where nasipaddress=%s" 
cur.execute(sql, (ip,)) 
Смежные вопросы