我的SQL查询如下所示:
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)
当我执行时,我收到错误说:
psycopg2.ProgrammingError: syntax error at or near "Basic"
我不确定为什么我的语法错误
答案 0 :(得分:2)
你的陈述;
query = """SELECT * FROM product_info WHERE product_name = %s AND retailer = %s""" % (product, retailer)
...从查询和参数构建一个完整的字符串,而不会在字符串周围引用任何字符串,这会使整个字符串无效的SQL在执行时失败;
SELECT * FROM product_info
WHERE product_name = Huggies Little Movers Diaper Pants for Boys Size 5 (60 Count)
AND retailer = Target
您可能要做的是参数化您的查询,而不是通过在元组中传递参数来在执行中完成;
query = """SELECT * FROM product_info WHERE product_name = %s AND retailer = %s"""
...
cur.execute(query, (product, retailer))