ホームページ  >  記事  >  バックエンド開発  >  Python pymysql が SQL ステートメントにパラメータを渡す方法は何ですか?

Python pymysql が SQL ステートメントにパラメータを渡す方法は何ですか?

PHPz
PHPz転載
2023-06-13 12:07:401274ブラウズ
Directory
  • Python-pymysql は SQL ステートメントにパラメータを渡す方法

    • 方法 1: パラメータを渡さない

    • 方法 2: 配列を使用してパラメータを渡す

    • 方法 3: 辞書の dict 型を使用してパラメータを渡す

Python-pymysql SQL ステートメントにパラメータを渡す方法

方法 1: パラメータを渡さない

## 方式一、不传递参数
 id = "01"
 name = "语文"
 sql = "select * from course where course_id = '%s'  and course_name = '%s' ;" %(id,name)
 ## 执行数据库查询或命令
 cursor.execute(sql)

方法 2: 配列を使用してパラメータを渡す

## 方式二、使用数组传递参数
  values = ['01','语文']
  sql = "select * from course where course_id = %s and course_name = %s "
  ## 执行数据库查询或命令
  cursor.execute(sql,values)

注: ここでプレースホルダーは %s です。文字列、数値、その他の型のいずれであっても、このプレースホルダーです。 %s は引用符で囲むことができません。

と最初の書き方の違いは何ですか?

この 2 つの違いは、変数の解析です。

パーセント記号 % を使用して記述する最初の方法は、Python インタープリターがそれに応じて %s を置き換えることです。このアプローチには問題があり、特殊文字が含まれている場合など、場合によっては正しく解析できず、インジェクション攻撃の脆弱性につながる可能性があります。

2 番目に、変数が実行のパラメータとして渡され、MySQLdb の組み込みメソッドが変数を適切な内容に解釈します。

通常の状況では、2 番目のメソッドを使用し、変数をパラメータとして渡して実行することをお勧めします。

方法 3: 辞書の dict 型を使用してパラメーターを渡す

## 方式三、使用字典dict类型传递参数
  sql = "select * from course where course_id = %(course_id)s and course_name =  %(course_name)s ;"
  ## 将参数封装到字典
  #values = {'course_id':'01','course_name':'语文'}
  values = {'course_name':'语文','course_id':'01'}
  ## 执行数据库查询或命令
  cursor.execute(sql,values)

この方法では、渡されるパラメーター間の対応関係が比較的明確になります。特にパラメータが多い場合、辞書を使用すると、パラメータが正しい順序で渡されることが保証されます。

以上がPython pymysql が SQL ステートメントにパラメータを渡す方法は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。