2017-12-23 1 views
0

Ich versuche, den Wert der Variablen test_text in eine Postgres 9.6-Datenbank einzufügen, jedes Mal, wenn die Funktion database_insert ausgelöst wird.Psycopg2 - nicht alle Argumente, die während der Formatierung der Zeichenfolge konvertiert wurden

Ich verwende Python 3.6 und psycopg2 v 2.7

Wenn ich den Code unten, ohne den Platzhalter verwenden: zB% s ersetzen mit 'Test' und entfernen, (test_text) - es funktioniert, wie ich erwarten würde. ..

def database_insert(update): 

    test_text = 'This is some test text' 

    with psycopg2.connect("DB CONNECTION DETAILS ARE HERE'") as conn: 

     cur = conn.cursor() 

     cur.execute("INSERT INTO test VALUES(%s);", (test_text)) 

     conn.commit() 

     cur.close() 

    conn.close() 

jedoch, wenn die Funktion den Wert der test_text Variable einfügen trys% s Platzhalter verwenden, ich den Fehler unten bekommen ...

cur.execute("INSERT INTO test VALUES(%s);", (test_text)) 
TypeError: not all arguments converted during string formatting 

Jede Hilfe auf, wohin ich gehe w rong mit diesem wird sehr geschätzt!

Antwort

1

Es gibt ein subtiles Problem hier.

Sie benötigen ein Komma, um ein Tupel nicht nur die Parens/Klammern zu machen.

So einfach ändern:

cur.execute("INSERT INTO test VALUES(%s);", (test_text,)) 

Und Sie sollten gut sein!

+0

Ich kann nicht glauben, dass es so eine einfache Lösung war - ich habe buchstäblich stundenlang gesucht, wie ich das beheben kann, Danke Bernie! Ich werde als richtige Antwort markieren, sobald dies mich - Frohe Weihnachten! –

+0

Frohe Weihnachten euch auch Mann! Glückliche Kodierung – bernie

Verwandte Themen