Python SQL execute加参数的原理
2021/4/12 19:27:01
本文主要是介绍Python SQL execute加参数的原理,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
在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 ret execute_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加参数的原理的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-09-18初探Python股票自动化交易:入门指南
- 2024-09-18Python量化入门:轻松掌握量化分析基础与实战
- 2024-09-18Python量化交易:入门指南与实践
- 2024-09-18Python量化交易:入门指南与实战技巧
- 2024-09-14Python人工智能项目实战:从零开始的实践指南
- 2024-09-14探索Python人工智能资料:初学者的指南
- 2024-09-14Python人工智能资料:初学者的全面指南
- 2024-09-13Matplotlib入门:轻松绘制Python数据可视化图表
- 2024-09-13Python人工智能:初学者的入门指南
- 2024-09-13Python人工智能:轻松入门与实践