Python MySQL の IN 句内でリストをネストする
P粉781235689
P粉781235689 2023-08-22 17:04:59
0
2
494
<p>リストを文字列にマッピングする方法は知っています。</p> <pre class="brush:php;toolbar:false;">foostring = ",".join(map(str, list_of_ids) )</pre> <p></p> を使用してその文字列を IN 句に挿入できることはわかっています。 <pre class="brush:php;toolbar:false;">cursor.execute("DELETE FROM foo.bar WHERE baz IN ('%s')" % (foostring))</pre> <p>安全な方法 (SQL インジェクションを回避) で同じ機能を MySQL データベースに実装する必要があります。上記の例では、foostring が実行パラメータとして渡されていないため、脆弱です。また、MySQL ライブラリの外でクォートとエスケープを行う必要があります。 </p> <p> (関連する SO 質問がありますが、そこにリストされている回答は MySQL データベースでは機能しないか、SQL インジェクション攻撃に対して脆弱です。) </p>
P粉781235689
P粉781235689

全員に返信(2)
P粉434996845

この質問は古いものですが、他の人が私が探しているものを探している場合に備えて返信を残したいと思いました

受け入れられた答えは、パラメーターがたくさんある場合、または名前付きパラメーターを使用したい場合に混乱を招きます

いくつかの試みの後

リーリー

python2.7 および pymysql==0.7.11 でテストされ、合格しました

いいねを押す +0
P粉212114661

直接使用list_of_ids:

リーリー

こうすることで、自分自身を引用することを避け、さまざまな SQL インジェクションの問題を回避できます。

データ (list_of_ids) は (クエリ テキストではなく) パラメーターとして mysql のドライバーに直接渡されるため、インジェクションの問題は発生しないことに注意してください。文字を削除したり引用したりせずに、文字列内の任意の文字を保持できます。

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート