/ / Postgres fügt Syntaxfehler ein - postgresql, psycopg2

Postgres fügt Syntaxfehler ein - postgresql, psycopg2

Meine SQL-Abfrage sieht folgendermaßen aus:

product = "Huggies Little Movers Diaper Pants for Boys Size 5 (60 Count)"
retailer = "Target"
query = """SELECT * FROM product_info WHERE product_name = %s AND retailer = %s""" % (product, retailer)

conn = psycopg2.connect("dbname="test1" user="postgres" host="localhost" password="123"")
cur = conn.cursor(cursor_factory = psycopg2.extras.RealDictCursor)
cur.execute(query)

Wenn ich das ausführen, bekomme ich eine Fehlermeldung:

psycopg2.ProgrammingError: syntax error at or near "Basic"

Ich bin nicht sicher, warum meine Syntax falsch ist

Antworten:

2 für die Antwort № 1

Deine Meinung;

query = """SELECT * FROM product_info WHERE product_name = %s AND retailer = %s""" % (product, retailer)

... erstellt eine vollständige Zeichenfolge aus der Abfrage und den Parametern ohne Anführungszeichen um die Zeichenfolgen, wodurch die gesamte Zeichenfolge ungültig wird ausführen;

SELECT * FROM product_info
WHERE product_name = Huggies Little Movers Diaper Pants for Boys Size 5 (60 Count)
AND retailer = Target

Was Sie wahrscheinlich zu tun versuchen, ist die Parametrierung Ihrer Abfrage, die stattdessen in durchgeführt wird ausführen durch Übergeben der Parameter in einem Tupel;

query = """SELECT * FROM product_info WHERE product_name = %s AND retailer = %s"""
...
cur.execute(query, (product, retailer))