[英]Python: inserting double or single quotes around a string
我使用python来访问MySQL数据库并且因为引号不在变量周围而在字段中获取未知列。
代码如下:
cur = x.cnx.cursor()
cur.execute('insert into tempPDBcode (PDBcode) values (%s);' % (s))
rows = cur.fetchall()
如何在s的值周围手动插入双引号或单引号? 我尝试使用str()
并手动连接s
周围s
引号,但它仍然无法正常工作。 sql语句工作正常iv双和三检查我的SQL查询。
您不应该使用Python的字符串函数来构建SQL语句。 您冒着留下SQL注入漏洞的风险。 你应该这样做:
cur.execute('insert into tempPDBcode (PDBcode) values (%s);', s)
请注意逗号。
如果您使用数据库API,Python将自动为您执行此操作:
cur = x.cnx.cursor()
cur.execute('insert into tempPDBcode (PDBcode) values (%s)',s)
使用DB API意味着python将确定是否使用引号,并且还意味着您不必担心SQL注入攻击,以防您的s
变量恰好包含,例如,
value'); drop database; '
如果这纯粹是一个字符串处理问题,答案就是将它们放在字符串中:
cur.execute('insert into tempPDBcode (PDBcode) values ("%s");' % (s))
这是Python支持两种引号的经典用例。
但是,正如其他答案和评论所指出的那样,在这种情况下存在与SQL相关的问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.