python mysql api撇号

python mysql api撇号,python,code-injection,mysql-python,apostrophe,Python,Code Injection,Mysql Python,Apostrophe,众所周知,Python的cgi.escape函数不转义引号或撇号。Python MySQLdb API也可以这么说吗? 在下面的例子中,O'Reilly中的撇号是在进入数据库时转义的吗 lastname = O'Reilly cursor.execute ('INSERT INTO table_name (surname) VALUES (%s)', (lastname,)) 谢谢 是的,答案至少需要30个字符。我非常喜欢你的答案!我能告诉你一些文件吗?我相信我已经在网上搜索过了,但是你一定找

众所周知,Python的cgi.escape函数不转义引号或撇号。Python MySQLdb API也可以这么说吗? 在下面的例子中,O'Reilly中的撇号是在进入数据库时转义的吗

lastname = O'Reilly
cursor.execute ('INSERT INTO table_name (surname) VALUES (%s)', (lastname,))

谢谢

是的,答案至少需要30个字符。

我非常喜欢你的答案!我能告诉你一些文件吗?我相信我已经在网上搜索过了,但是你一定找到了我错过的东西。谢谢我做数据库访问已经15年了,这是我的经验-这只是所有数据库库的工作方式:-您在执行调用中所做的是将标记%s绑定到参数。至少从概念上讲,这是不可能的——你应该忽略MySQLdb库在引擎盖下的功能……哈哈,我想这是我的问题;我想知道Python在净化数据方面做了什么。你是说O'Reilly变成了O&x27;Reilly或O\\\\'Reilly或其他正在发送到db表的东西?那么,如果我调用该数据以在html文档中使用,我就没有更多的转义要做了?在您多年的编码工作中,您是否见过任何Python文档可以解决这个问题?非常感谢您的回答。不,O'Reilly的存储方式与数据库表中的存储方式完全相同。当数据库库按照DB api的预期方式实现参数绑定时,O'Reilly根本不会发生任何变化。不幸的是,Python中有几个DB-lib伪造了参数绑定,并在客户端创建sql语句之前将参数转换为字符串。但是,这不是它应该如何工作的,所以我会忘记例外情况,他们随后将对sql方言使用适当的转换。关于在html文档中使用的问题的答案是:不需要进一步转义,因为撇号可能需要转义其他字符,例如。