Cara menghantar parameter kepada pernyataan SQL dengan Python-pymysql
Kaedah 1: Jangan lulus parameter
Kaedah 2: Gunakan tatasusunan untuk menghantar parameter
Kaedah 3: Gunakan jenis dict kamus untuk lulus parameter
## 方式一、不传递参数 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)
Nota: di sini Pemegang tempat ialah %s, sama ada ia rentetan, nombor atau jenis lain, ia adalah pemegang tempat ini. %s tidak boleh dipetik. Apakah perbezaan antara
dengan cara penulisan pertama?
Perbezaan antara keduanya ialah penghuraian pembolehubah:
Cara pertama untuk menulis menggunakan tanda peratus % ialah penterjemah Python menggantikan %s dengan sewajarnya. Terdapat masalah dengan pendekatan ini dan ia tidak dapat dihuraikan dengan betul dalam beberapa kes, seperti apabila aksara khas disertakan, yang mungkin membawa kepada kelemahan dalam serangan suntikan.
Kedua, pembolehubah dihantar masuk sebagai parameter pelaksanaan, dan kaedah terbina dalam MySQLdb mentafsir pembolehubah ke dalam kandungan yang sesuai.
Secara amnya, adalah disyorkan untuk menggunakan kaedah kedua, menghantar pembolehubah sebagai parameter untuk dilaksanakan.
## 方式三、使用字典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)
Dengan cara ini, surat-menyurat antara parameter yang diluluskan adalah agak jelas. Terutama apabila terdapat banyak parameter, menggunakan kamus boleh memastikan bahawa parameter diluluskan dalam susunan yang betul.
Atas ialah kandungan terperinci Apakah kaedah untuk pymysql Python untuk menghantar parameter kepada pernyataan SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!