私の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は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))