使用python将带有特殊字符的值插入mysql表时出错

时间:2016-02-02 04:33:25

标签: python mysql

< p>在使用动态列表将值插入mysql表时出现问题。我一直有引号指向表而不是值的问题。< / p> < p>以下是代码:< / p> < pre>< code> lst = [' Pid',' Base',' Size',' LoadCount',' ;路径'' Casename'] lst2 = [' 888',' 1213726720',' 61440',' 65535',' \\ SystemRoot \\ System32 \ \ smss.exe',' wean'] table_name =" test" insert_intotable =" INSERT INTO" + table_name +"(" +"," .join(lst)+")VALUES(" +","。加入(lst2)+")" print insert_intotable c.execute(insert_intotable) conn.commit() c.close() conn.close() < /代码>< /预> < p>这会导致以下错误:< / p> <预><代码>>回溯(最近一次调用最后一次):文件" pp.py",第53行,in > <模块> > c.execute(insert_intotable)File" /usr/lib/python2.7/dist-packages/MySQLdb/cursors.py" ;,第174行,在 >执行 > self.errorhandler(self,exc,value)File" /usr/lib/python2.7/dist-packages/MySQLdb/connections.py" ;,第36行,in > defaulterrorhandler >提出错误类,错误值 > _mysql_exceptions.ProgrammingError:(1064,"您的SQL语法有错误;请查看与您的MySQL服务器对应的手册 >正确使用near语法的版本 > ' \\ SYSTEMROOT \\ System32下\\ SMSS.EXE,试验)'在第1行") < /代码>< /预> < p>导致此语法问题的原因是什么?< / p>

1 个答案:

答案 0 :(得分:0)

插入字符串值时使用'单引号'

<强> UPD:

将第二行更改为此

 lst2 =['888', '1213726720', '61440', '65535', '\'\\SystemRoot\\System32\\smss.exe\'', '\'wean\'']

因为,SQL查询错误:

 INSERT INTO test (Path) VALUES(\SystemRoot\System32\smss.exe)

您的代码会生成此类查询。

您应引用varchar值:

 INSERT INTO test (Path) VALUES('\SystemRoot\System32\smss.exe')