我使用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)
请注意逗号.
如果您使用数据库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)
| 归档时间: |
|
| 查看次数: |
5852 次 |
| 最近记录: |