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

Jes*_*ssy 3 python sql quotes

我使用python来访问MySQL数据库并且因为引号不在变量周围而在字段中获取未知列.

代码如下:

cur = x.cnx.cursor()
cur.execute('insert into tempPDBcode (PDBcode) values (%s);' % (s)) 
rows = cur.fetchall()
Run Code Online (Sandbox Code Playgroud)

如何在s的值周围手动插入双引号或单引号?我尝试使用str()并手动连接引号,s但它仍然无法正常工作.sql语句工作正常iv双和三检查我的SQL查询.

Mar*_*ers 10

您不应该使用Python的字符串函数来构建SQL语句.您冒着留下SQL注入漏洞的风险.你应该这样做:

cur.execute('insert into tempPDBcode (PDBcode) values (%s);', s) 
Run Code Online (Sandbox Code Playgroud)

请注意逗号.


Ian*_*and 5

如果您使用数据库API,Python将自动为您执行此操作:

cur = x.cnx.cursor()
cur.execute('insert into tempPDBcode (PDBcode) values (%s)',s) 
Run Code Online (Sandbox Code Playgroud)

使用DB API意味着python将确定是否使用引号,也意味着您不必担心SQL注入攻击,以防您的s变量恰好包含,例如,

value'); drop database; '
Run Code Online (Sandbox Code Playgroud)