91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python MySQLdb 執行sql語句時的參數傳遞方式

發布時間:2020-10-26 08:49:15 來源:腳本之家 閱讀:981 作者:翔云123456 欄目:開發技術

使用MySQLdb連接數據庫執行sql語句時,有以下幾種傳遞參數的方法。

1.不傳遞參數

conn = MySQLdb.connect(user="root",passwd="123456",host="192.168.101.23",db="cmdb")

orange_id = 98
sql = "select * from orange where id=%s" % orange_id

cursor = conn.cursor(sql)
cursor.execute()

2.傳遞參數

color = "yellow"
sql = "select * from orange where color = %s"

cursor.execute(sql, color)

注意此處的占位符是%s,無論是字符串、數字或者其他類型,都是這個占位符。

另外, %s不能加引號,如'%s', 這是錯誤的寫法。

與第一種寫法,有什么區別呢?

兩者區別是對變量的解析:

第一種寫法,使用百分號%, 是用Python解釋器對%s執行相應的替換。這種方法存在漏洞,有些時候不能正常解析,比如包含某些特殊字符,甚至會造成注入攻擊的風險。

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

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

3.使用字典dict類型傳遞參數

sql = "select * from orange where %(color)s, %(weight)s"
values = {"color": "yellow", "weight": 30}
cursor.execute(sql, values)

這種方式,傳遞的參數對應關系比較清晰。尤其是參數比較多時,使用字典,可以保證傳遞參數的順序正確。

補充知識:python自動化之pymysql庫使用變量向SQL語句中動態傳遞參數(sql注入 || 傳參策略)

使用python 3連接Mysql實現自動化增刪查改庫內數據,由于項目原因很多的sql語句過于復雜,導致sql語句內傳遞的參數過多而且容易變動,導致很多同學不知從何下手動態的傳遞參數,有的采用比較笨的方法拼接sql,但是工作量太大,而且復雜的語句拼接時很容易出錯且不好維護,所以為大家整理了%s占位符的字典傳參的用法

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()

運行后就能得到所查詢的數據了

Python MySQLdb 執行sql語句時的參數傳遞方式

最后建議大家多看官方的文檔或標準教程,這樣更有益學習

以上這篇Python MySQLdb 執行sql語句時的參數傳遞方式就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持億速云。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

乌拉特后旗| 讷河市| 马尔康县| 绩溪县| 汤阴县| 丽江市| 通城县| 沂源县| 黄骅市| 汕头市| 瑞昌市| 巴林右旗| 磐安县| 镇安县| 南雄市| 嵊州市| 佛冈县| 易门县| 宿松县| 阜阳市| 浪卡子县| 特克斯县| 蓝田县| 田阳县| 和田市| 遂昌县| 灵宝市| 老河口市| 鹤峰县| 卢龙县| 宜川县| 麦盖提县| 崇阳县| 北辰区| 色达县| 绥中县| 宁夏| 堆龙德庆县| 仙桃市| 黄浦区| 彭山县|