繁体   English   中英

Python:在字符串周围插入双引号或单引号

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM