/ / Postgresの構文エラー挿入 - postgresql、psycopg2

Postgresの構文エラー挿入 - 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は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))