Python?pymysql向SQL語(yǔ)句中傳參的方法有哪些

python?pymysql向sql語(yǔ)句中傳參的方法有哪些

本文講解"python?pymysql向sql語(yǔ)句中傳參的方法有哪些",希望能夠解決相關(guān)問(wèn)題。

目錄
  • python-pymysql如何向sql語(yǔ)句中傳參

    • 方法一:不傳遞參數(shù)

    • 方法二:使用數(shù)組傳遞參數(shù)

    • 方法三:使用字典dict類(lèi)型傳遞參數(shù)

python-pymysql如何向sql語(yǔ)句中傳參

方法一:不傳遞參數(shù)

##?方式一、不傳遞參數(shù)
?id?=?"01"
?name?=?"語(yǔ)文"
?sql?=?"select?*?from?course?where?course_id?=?'%s'??and?course_name?=?'%s'?;"?%(id,name)
?##?執(zhí)行數(shù)據(jù)庫(kù)查詢或命令
?cursor.execute(sql)

方法二:使用數(shù)組傳遞參數(shù)

##?方式二、使用數(shù)組傳遞參數(shù)
??values?=?['01','語(yǔ)文']
??sql?=?"select?*?from?course?where?course_id?=?%s?and?course_name?=?%s?"
??##?執(zhí)行數(shù)據(jù)庫(kù)查詢或命令
??cursor.execute(sql,values)

注意:此處的占位符是%s,無(wú)論是字符串、數(shù)字或者其他類(lèi)型,都是這個(gè)占位符。?%s不能加引號(hào)。

與第一種寫(xiě)法,有什么區(qū)別呢?

兩者區(qū)別是對(duì)變量的解析:

第一種寫(xiě)法,使用百分號(hào)%, 是用python解釋器對(duì)%s執(zhí)行相應(yīng)的替換。這種方法存在漏洞,有些時(shí)候不能正常解析,比如包含某些特殊字符,甚至?xí)斐勺⑷牍舻娘L(fēng)險(xiǎn)。

第二種,變量是作為execute的參數(shù)傳入的,由mysqldb的內(nèi)置方法把變量解釋成合適的內(nèi)容。

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

方法三:使用字典dict類(lèi)型傳遞參數(shù)

##?方式三、使用字典dict類(lèi)型傳遞參數(shù)
??sql?=?"select?*?from?course?where?course_id?=?%(course_id)s?and?course_name?=??%(course_name)s?;"
??##?將參數(shù)封裝到字典
??#values?=?{'course_id':'01','course_name':'語(yǔ)文'}
??values?=?{'course_name':'語(yǔ)文','course_id':'01'}
??##?執(zhí)行數(shù)據(jù)庫(kù)查詢或命令
??cursor.execute(sql,values)

這種方式,傳遞的參數(shù)對(duì)應(yīng)關(guān)系比較清晰。尤其是參數(shù)比較多時(shí),使用字典,可以保證傳遞參數(shù)的順序正確。

關(guān)于 "python?pymysql向sql語(yǔ)句中傳參的方法有哪些" 就介紹到此。希望多多支持碩編程。

下一節(jié):mysql動(dòng)態(tài)增添字段如何實(shí)現(xiàn)

mysql教程

相關(guān)文章
亚洲国产精品第一区二区,久久免费视频77,99V久久综合狠狠综合久久,国产免费久久九九免费视频