Python-pymysql は SQL ステートメントにパラメータを渡す方法
方法 1: パラメータを渡さない
方法 2: 配列を使用してパラメータを渡す
方法 3: 辞書の dict 型を使用してパラメータを渡す
## 方式一、不传递参数 id = "01" name = "语文" sql = "select * from course where course_id = '%s' and course_name = '%s' ;" %(id,name) ## 执行数据库查询或命令 cursor.execute(sql)
## 方式二、使用数组传递参数 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 番目のメソッドを使用し、変数をパラメータとして渡して実行することをお勧めします。
## 方式三、使用字典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 サイトの他の関連記事を参照してください。