Python?pymysql向SQL語句中傳參的方法有哪些
python?pymysql向sql語句中傳參的方法有哪些
本文講解"python?pymysql向sql語句中傳參的方法有哪些",希望能夠解決相關(guān)問題。
目錄- python-pymysql如何向sql語句中傳參
- 方法一:不傳遞參數(shù)
- 方法二:使用數(shù)組傳遞參數(shù)
- 方法三:使用字典dict類型傳遞參數(shù)
python-pymysql如何向sql語句中傳參
方法一:不傳遞參數(shù)
##?方式一、不傳遞參數(shù) ?id?=?"01" ?name?=?"語文" ?sql?=?"select?*?from?course?where?course_id?=?'%s'??and?course_name?=?'%s'?;"?%(id,name) ?##?執(zhí)行數(shù)據(jù)庫查詢或命令 ?cursor.execute(sql)
方法二:使用數(shù)組傳遞參數(shù)
##?方式二、使用數(shù)組傳遞參數(shù) ??values?=?['01','語文'] ??sql?=?"select?*?from?course?where?course_id?=?%s?and?course_name?=?%s?" ??##?執(zhí)行數(shù)據(jù)庫查詢或命令 ??cursor.execute(sql,values)
注意:此處的占位符是%s,無論是字符串、數(shù)字或者其他類型,都是這個占位符。?%s不能加引號。
與第一種寫法,有什么區(qū)別呢?
兩者區(qū)別是對變量的解析:
第一種寫法,使用百分號%, 是用python解釋器對%s執(zhí)行相應(yīng)的替換。這種方法存在漏洞,有些時候不能正常解析,比如包含某些特殊字符,甚至?xí)斐勺⑷牍舻娘L(fēng)險。
第二種,變量是作為execute的參數(shù)傳入的,由mysqldb的內(nèi)置方法把變量解釋成合適的內(nèi)容。
一般情況下,建議使用第二種方法,把變量作為參數(shù)傳遞給execute。
方法三:使用字典dict類型傳遞參數(shù)
##?方式三、使用字典dict類型傳遞參數(shù) ??sql?=?"select?*?from?course?where?course_id?=?%(course_id)s?and?course_name?=??%(course_name)s?;" ??##?將參數(shù)封裝到字典 ??#values?=?{'course_id':'01','course_name':'語文'} ??values?=?{'course_name':'語文','course_id':'01'} ??##?執(zhí)行數(shù)據(jù)庫查詢或命令 ??cursor.execute(sql,values)
這種方式,傳遞的參數(shù)對應(yīng)關(guān)系比較清晰。尤其是參數(shù)比較多時,使用字典,可以保證傳遞參數(shù)的順序正確。
關(guān)于 "python?pymysql向sql語句中傳參的方法有哪些" 就介紹到此。希望多多支持碩編程。