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 № 1Deine 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))