首页 > 解决方案 > PyMySQL 参数化查询如何在内部工作,是否安全?

问题描述

我正在使用 MySQL 服务器和库aiomysql在 Python 上编写一个小型 REST API,它使用库PyMySQL的接口和内部结构,因此实际查询由 PyMySQL 发送到数据库。

查询示例:

cur.execute('SELECT * FROM clients WHERE id=%s;', args=(1, )

我的问题是 PyMySQL 将 args 元组中的所有数据转换为strings,因此查询必须只包含 '% '占位符。我曾经认为安全转义是通过使用类型比较来完成的(它不会从字符串参数的注入中保存,但无论如何),但显然它没有,所以我有几个问题: PyMySQL 参数化查询如何在内部执行安全转义,为什么将所有内容都转换为字符串,是否安全?

标签: pythonmysqlpymysql

解决方案


推荐阅读