質問

SQLステートメントに非SQL変数を追加できるようにドキュメントを見つけるのに苦労しています。 http://dev.mysql.com/doc/refman/5.0/en/user-variables.html.

Pythonと有効なSQLで次のことを行いますか?

id, provider_id, title = row[0], row[2], row[4]
cursor.execute("INSERT INTO vendor_id VALUES (%s,%s,%s);"%(id, provider_id, title))
役に立ちましたか?

解決

あなたは正しい軌道に乗っていますが、このように見えるはずです。

id, provider_id, title = row[0], row[2], row[4]
cursor.execute("INSERT INTO vendor_id VALUES (%s, %s, %s)", id, provider_id, title)

Python SQLデータベースAPIは、変数の脱出と引用の改革を自動的に無効にし、要求します。文字列のフォーマット演算子は不要であり、この場合、可変引用のフォーマットはありません。好きな方法で変数の最終配列をフォーマットできます。使用するような%演算子を使用しないでください。私が正しい場合、この理由は、変数がバインドされており、テキストにフォーマットされていないため、注入が発生しないためです

cursor.execute("INSERT INTO vendor_id VALUES (%s, %s, %s)", (id, provider_id, title))
cursor.execute("INSERT INTO vendor_id VALUES (?, ?, ?)", (id, provider_id, title))

も機能するはずです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top