ホームページ  >  に質問  >  本文

Python の SQL ステートメントで変数を使用するにはどうすればよいですか?

<p>次の Python コードがあります: </p> <pre class="brush:py;toolbar:false;">cursor.execute("INSERT INTO table VALUES var1, var2, var3,") </pre> <p>ここで、<code>var1</code>は整数、<code>var2</code>および<code>var3</code>は文字列です。 </p> <p>クエリ テキストに変数名を含めずに Python で変数名を記述するにはどうすればよいですか? </p>
P粉200138510P粉200138510426日前468

全員に返信(2)返信します

  • P粉545682500

    P粉5456825002023-08-21 13:22:44

    Python DB-API の実装が異なると、使用できるプレースホルダーも異なるため、どのプレースホルダーを使用しているかを確認する必要があります。たとえば (MySQLdb を使用):

    リーリー

    または (Python 標準ライブラリの sqlite3 を使用):

    リーリー

    またはその他 (VALUES の後には (:1, :2, :3) または「名前付きスタイル」 (:fee, :fie , :fo) または (%(fee)s, %(fie)s, %(fo)s)execute ディクショナリの 2 番目のパラメータに 1 を渡します。地図)。使用している DB API モジュールの paramstyle 文字列定数を確認し、 http://www.python.org/dev/peps/pep-0249/ で paramstyle を探します。すべてのパラメータの受け渡しスタイルについて学びましょう。

    返事
    0
  • P粉926174288

    P粉9261742882023-08-21 10:38:41

    リーリー

    パラメータはタプル (a, b, c) として渡されることに注意してください。パラメーターを 1 つだけ渡す場合、タプルはコンマ (a,) で終わる必要があります。

    データベース API は変数を適切にエスケープし、引用符で囲みます。文字列フォーマット演算子 (%) は使用しないように注意してください。

      エスケープや引用は行いません。
    1. SQL インジェクション
    2. など、制御できない文字列フォーマット攻撃に対して脆弱です。

      返事
      0
  • キャンセル返事