Python pymysql向SQL語句中傳參的方法有哪些

PHPz
發布: 2023-06-13 12:07:40
轉載
1279 人瀏覽過
目錄
  • Python-pymysql如何向SQL語句中傳參參

    • 方法一:不傳遞參數

    • 方法二:使用陣列傳遞參數

    • 方法三:使用字典dict型別傳遞參數

Python-pymysql如何向SQL語句中傳參

方法一:不傳遞參數

## 方式一、不传递参数
 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不能加引號。

與第一種寫法,有什麼差別呢?

兩者差異是對變數的解析:

使用百分號%的第一種寫法是Python解釋器對%s進行對應的替換。這種方法有問題,某些情況下無法正確解析,例如包含特殊字元時,可能會導致注入攻擊的漏洞。

第二種,變數是作為execute的參數傳入的,由MySQLdb的內建方法把變數解釋成適當的內容。

一般情況下,建議使用第二種方法,把變數當作參數傳遞給execute。

方法三:使用字典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中文網其他相關文章!

相關標籤:
sql
來源:yisu.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板