15

この質問がこの Web サイトでさまざまな方法で尋ねられているのを見てきましたが、どれも私の問題に正確に対処していません。

内部に一重引用符を含む sql ステートメントがあり、それを使用してデータベース クエリを作成する前に、推奨される方法を使用しようとしています。したがって、ステートメントは次のようになります

val2="abc 'dostuff'" 
sql="INSERT INTO TABLE_A(COL_A,COL_B) VALUES(%s,'%s')" %(val1, val2)
a_cursor.execute(sql)

ただし、これを実行すると、..

ProgrammingError: (1064,"You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'dostuff'.

私は何を間違っていますか?どうもありがとうヌプール

4

1 に答える 1

45

文字列補間の代わりにパラメータを使用して、データベース コネクタによって値が適切にエスケープされるようにします。

sql = "INSERT INTO TABLE_A(COL_A,COL_B) VALUES(%s, %s)"
a_cursor.execute(sql, (val1, val2))

mysqldb の sql パラメーター スタイルは、python 文字列書式設定演算子で使用されるのと同じ構文を使用しますが、これは少し混乱します。

于 2012-10-15T19:50:16.783 に答える