PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

psycopg2 Umgang mit TypeError:Nicht alle Argumente wurden während der Zeichenfolgenformatierung konvertiert

Die SQL-Argumente übergeben Sie an execute muss in einem Tupel oder einer Liste enthalten sein, auch wenn es nur eines davon gibt. Dies ist in der Dokumentation vermerkt:

Bei der Bindung von Positionsvariablen muss das zweite Argument immer eine Sequenz sein, auch wenn es eine einzelne Variable enthält. Und denken Sie daran, dass Python ein Komma benötigt, um ein Tupel mit einem einzelnen Element zu erstellen:

Sie müssen es also so machen:

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