user2628641
user2628641

Reputation: 2154

Postgres insert syntax error

My SQL query looks like this:

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)

When i execute that i get a error saying:

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

I am not sure why my syntax is wrong

Upvotes: 0

Views: 87

Answers (1)

Joachim Isaksson
Joachim Isaksson

Reputation: 180877

Your statement;

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

...builds a complete string from the query and parameters without any quoting around your strings, which makes the entire string invalid SQL which fails at execute;

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

What you're probably trying to do is parameterizing your query which is instead done in execute by passing the parameters in a tuple;

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

Upvotes: 2

Related Questions