Postgres插入语法错误

时间:2016-03-10 15:11:47

标签: postgresql psycopg2

我的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"

我不确定为什么我的语法错误

1 个答案:

答案 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))