Ich bin neu in Python und arbeiten mit der Verwendung der Psycopg2 zum Einfügen von Daten in Postgres-Datenbank. Ich versuche, Elemente einzufügen, aber die FehlermeldungPython psycopg2 Syntax Fehler
bekommen „Psycopg2.ProgrammingError: Syntaxfehler bei oder in der Nähe von "cup" LINE 1: INSERT INTO store VALUES (7,10.5, Kaffeetasse)
mit dem^neben Kaffeetasse. ich gehe davon aus der Reihenfolge falsch ist, aber ich dachte, dass Sie es auf diese Weise so lange geben könnten, wie Sie die Werte angegeben.
Hier ist der Code.
import psycopg2
def create_table():
conn=psycopg2.connect("dbname='db1' user='postgres' password='postgress123' host='localhost' port='5432'")
cur=conn.cursor()
cur.execute("CREATE TABLE IF NOT EXISTS store (item TEXT, quantity INTEGER, price REAL)")
conn.commit()
conn.close()
def insert(quantity, price, item):
conn=psycopg2.connect("dbname='db1' user='postgres' password='postgress123' host='localhost' port='5432'")
cur=conn.cursor()
cur.execute("INSERT INTO store VALUES(%s,%s,%s)" % (quantity, price, item))
conn.commit()
conn.close()
create_table()
insert(7, 10.5, 'coffee cup')
Sie String-Interpolation direkt in SQL-Abfragen nicht. Es macht Sie anfällig für [sql injection attacks] (https://xkcd.com/327/). In diesem Fall wird die Abfrage auch falsch formatiert. –
Danke Paul. Ich bin sehr neu in der Python und Psycopg2, und folgte Beispielen im Internet, um meine Füße nass zu machen, wie die Dinge funktionieren. Wie würden Sie in diesem Fall SQL-Injektionen im obigen Code vermeiden? Psycocg2-Dokument empfohlen, dass% s verwendet werden sollte, unabhängig davon, welche Art von Daten übergeben wird. Jede Hilfe würde sehr geschätzt werden. – IpSp00f3r