Python SQL execute加参数的原理

Python SQL execute加参数的原理,第1张

概述在Python中,当用pymysql库,或者MySQLdb库进行数据库查询时,为了防止sql注入,可以在execute的时候,把参数单独带进去,例如:defexecute_v1():config={'user':'root','password':'password1','host':'127.0.0.1',

在Python中,当用pyMysqL库,或者MysqLdb库进行数据库查询时,为了防止sql注入,可以在execute的时候,把参数单独带进去,例如:

def execute_v1():    config = {        'user': 'root',        'password': 'password1',        'host': '127.0.0.1',        'database': 'selfmoe',        'port': 3307,        'charset': 'utf8'    }    import pyMysqL  # 打开数据库连接    cnx = pyMysqL.connect(**config)    cur = cnx.cursor()    cur.execute('select Title,ID from post where Title =%(Title)s', dict(title="**'*"))    ret = cur.fetchall()    print ret    cur.close()    cnx.close()    return retexecute_v1()

cur.execute('select Title,ID from post where Title =%(Title)s', dict(title="**'*"))这行中,Title这个参数是以args的形式传进去的
查看pyMysqL的源码发现,当有args参数时,pyMysqL会做以下逻辑:

如果是入参是unicode,encode为utf8如果是字符串,在两边加单引号使用escape_string(from pyMysqL import escape_string)函数对字符串进行转义然后通过%来拼合字符串,得到最终的sql

所以

使用args参数,其实和自己手动转义的效果是一样的,最终传给MysqL的也是只有一个sql字符串。不过使用args可以把转义部分交给pyMysqL,这样安全性,稳定性更好,避免自己漏了转义,避免自己处理转义的异常情况。 总结

以上是内存溢出为你收集整理的Python SQL execute加参数的原理全部内容,希望文章能够帮你解决Python SQL execute加参数的原理所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1187638.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存