2017-01-23 3 views
1

Wenn ich versuche, die PlayerScore mit dem Code in Pythonpsycopg2.ProgrammingError: Spalte „Ihr Name“ existiert nicht

if Number.PlayerScore > Score.interact_database("SELECT Score FROM score WHERE Name = %s;" % Player_Name, False,)[0][0] 

auf die PostgreSQL-Datenbank zu bekomme ich diesen Fehler: psycopg2.ProgrammingError: column "your name" does not exist, wo ‚Ihren Namen‘ ist die Variable Spielername. Wenn ich es jedoch im PostgreSQL-Abfragetool ausführe, funktioniert es einwandfrei. Weiß jemand, warum diese Fehler auftreten und wie ich verhindern kann, dass es in Zukunft wieder passiert?

Antwort

1

http://initd.org/psycopg/docs/usage.html#the-problem-with-the-query-parameters

ich denke, wir bräuchten mehr des Codes sehen, aber laut der Dokumentation:

Never, never, NEVER use Python string concatenation (+) or string parameters interpolation (%) to pass variables to a SQL query string. Not even at gunpoint.

Versuchen Sie, die Parameter als zweites Argument in Ihrem cursor.execute() über Methode. Mit etwas wie:

cursor.execute("""SELECT Score FROM score WHERE Name = %(player)s""", {'player': player_name }) 
cursor.fetchone() 

Sollte funktionieren. Es kann auch ein Tupel von Werten akzeptieren.

+0

Danke, es hat funktioniert! – JasperMW

Verwandte Themen