私はpythonに新しく、psycopg2を使用してpostgresデータベースにデータを挿入しようとしています。私はアイテムを挿入しようとしているが、エラーメッセージが出Python psycopg2構文エラー
「Psycopg2.ProgrammingError:構文エラーまたはその付近 "AMカップ" LINE 1:店舗VALUES。INSERT INTO(7,10.5、コーヒーカップ)
^コーヒーカップの横で。私は順序が間違っているが、私はあなたがこの方法限り、あなたは値を指定したとして、それを入力すると考えていたと仮定しています。
ここでは、コードです。
import psycopg2
def create_table():
conn=psycopg2.connect("dbname='db1' user='postgres' password='postgress123' host='localhost' port='5432'")
cur=conn.cursor()
cur.execute("CREATE TABLE IF NOT EXISTS store (item TEXT, quantity INTEGER, price REAL)")
conn.commit()
conn.close()
def insert(quantity, price, item):
conn=psycopg2.connect("dbname='db1' user='postgres' password='postgress123' host='localhost' port='5432'")
cur=conn.cursor()
cur.execute("INSERT INTO store VALUES(%s,%s,%s)" % (quantity, price, item))
conn.commit()
conn.close()
create_table()
insert(7, 10.5, 'coffee cup')
SQLクエリで直接文字列補間をしないでください。あなたは[SQLインジェクション攻撃](https://xkcd.com/327/)に脆弱になります。この場合、クエリのフォーマットが不適切になります。 –
ありがとうPaul。私はpythonとpsycopg2の新機能を使い、どのように動作しているかを自分の足で濡らすためのWeb上の例に従っていました。この場合、上記のコードでどのようにSQLインジェクションを避けますか? Psycocg2の文書では、渡されるデータの種類に関係なく、%sを使用するように指示されています。どんな助けでも大歓迎です。 – IpSp00f3r