Moje zapytanie SQL wygląda następująco:
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)
Kiedy uruchamiam, że otrzymuję komunikat o błędzie:
psycopg2.ProgrammingError: syntax error at or near "Basic"
Nie jestem pewien, dlaczego moja składnia jest błędna
Odpowiedzi:
2 dla odpowiedzi № 1Twoje oświadczenie;
query = """SELECT * FROM product_info WHERE product_name = %s AND retailer = %s""" % (product, retailer)
... tworzy kompletny ciąg znaków z zapytania i parametrów bez żadnego cytowania wokół ciągów znaków, co powoduje, że cały łańcuch jest niepoprawny SQL, który kończy się niepowodzeniem wykonać;
SELECT * FROM product_info
WHERE product_name = Huggies Little Movers Diaper Pants for Boys Size 5 (60 Count)
AND retailer = Target
Prawdopodobnie próbuje się sparametryzować zapytanie, które jest wykonywane w wykonać przekazując parametry w krotce;
query = """SELECT * FROM product_info WHERE product_name = %s AND retailer = %s"""
...
cur.execute(query, (product, retailer))