在用pymysql操作數據庫的過程中,給sql語句傳參碰到了很多問題,網上傳參策略很多,這里推薦兩種
單個傳參用%s,寫起來比較簡單:
1
2
3
4
|
field = '-' sql_talk = "UPDATE cnp.Test set a='' where b='%s'" cursor.execute(sql_talk % field) db.commit() |
多個傳參用{0}占位符:
1
2
3
4
5
6
|
field = '-' a = 'code' sql_talk = "UPDATE cnp.Test set {0}='' where business_registration_code='{1}'" . format (a,field) cursor.execute(sql_talk) db.commit() |
補充知識:python自動化之pymysql庫使用變量向SQL語句中動態傳遞參數(sql注入 || 傳參策略)
使用python 3連接Mysql實現自動化增刪查改庫內數據,由于項目原因很多的sql語句過于復雜,導致sql語句內傳遞的參數過多而且容易變動,導致很多同學不知從何下手動態的傳遞參數,有的采用比較笨的方法拼接sql,但是工作量太大,而且復雜的語句拼接時很容易出錯且不好維護,所以為大家整理了%s占位符的字典傳參的用法
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
import pymysql db = pymysql.connect(host = "119.XX.XX.XX" , port = 3306 , user = "XXXXXXXX" , passwd = "XXXXXXXXXXXXX" , db = "XXXXXX" , charset = 'utf8' ) # %s 占位符為需要傳遞的參數,切記不要加''雙引號,要不然會報錯 sql = "SELECT totalusercount * 1.4 FROM mm_project_uv_outdoor WHERE poiid = %s AND currenttime = %s" cursor = db.cursor() # 以下為傳遞多個參數的用法 cursor.execute(sql,[ 'B00140N5CS' , '2019-04-23' ]) # 傳遞單個參數時 cursor.execute(sql,'B00140N5CS') print (cursor.fetchall()) db.close() |
運行后就能得到所查詢的數據了
最后建議大家多看官方的文檔或標準教程,這樣更有益學習
以上這篇pyMySQL SQL語句傳參問題,單個參數或多個參數說明就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持服務器之家。
原文鏈接:https://blog.csdn.net/qq_38322240/article/details/80510542