2017-06-22 4 views
1

Könnten Sie mir bitte helfen, herauszufinden, was ich falsch mache? Ich versuche einen neuen Spieler in die Spielertabelle einzufügen. diese ist die Python-Code:Zeile in psql db mit psycopg2 einfügen

def registerPlayer(name): 

code for connecting to db and cursor 

c.execute("INSERT INTO players(player_name) VALUES({name});".format(name=name)) 

code for committing to db and closing the connection 

hier ist mein Tabellenschema:

CREATE TABLE players(
    player_id serial PRIMARY KEY, 
    player_name varchar(50) NOT NULL 

); 

unten Fehler:

psycopg2.ProgrammingError: syntax error at or near "Nalaar" LINE 1: 

INSERT INTO Spieler (player_name) VALUES (Chandra Nalaar);

Antwort

1

Sie sollten keine Zeichenfolgenformatierung verwenden, um Werte in SQL-Abfragen zu platzieren. Stattdessen sollten Sie %s verwenden und den Namen im Parameter vars übergeben. Der Grund dafür ist, dass Sie die Parameter in die entsprechenden Datentypen konvertieren können.

Btw, mit einem ; am Ende in der SQL-Zeichenfolge ist redundant, wenn sie von cursor.execute aufgerufen wird, da es es für Sie automatisch macht.

c.execute("INSERT INTO players(player_name) VALUES(%(name)s)", {"name":name}) 

Diese Seite für weitere Details siehe:

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

+0

vielen Dank! Es hat keinen Fehler gezeigt, nachdem ich den Code überarbeitet habe (obwohl der letzte Teil laut der Dokumentation {"name": name "} sein sollte. – rstreet

+0

@street du bist willkommen, sorry über den Tippfehler, ich tippte es von meinem Telefon: S. – abccd

Verwandte Themen