使用动态列表创建表时遇到问题。我一直在Exit旁边收到错误,如下所示:
Traceback(最近一次调用最后一次):文件“pp.py”,第54行,in c.execute(createsqltable)文件“/usr/lib/python2.7/dist-packages/MySQLdb/cursors.py”,第174行, 执行 self.errorhandler(self,exc,value)文件“/usr/lib/python2.7/dist-packages/MySQLdb/connections.py”,第36行,in defaulterrorhandler 提出错误类,错误值 _mysql_exceptions.ProgrammingError:(1064,“您的SQL语法有错误;请查看与您的MySQL服务器对应的手册 在'Exit VARCHAR(250),caseid附近使用正确语法的版本 VARCHAR(250))'在第1行“) 这是代码:
lst =['Offset', 'Name', 'PID', 'PPID', 'Thds', 'Hnds', 'Sess', 'Wow64', 'Start', 'Exit', 'caseid']
table_name = "test"
createsqltable = """CREATE TABLE IF NOT EXISTS """ + table_name + " (" + " VARCHAR(250),".join(lst) + " VARCHAR(250))"
#print createsqltable
c.execute(createsqltable)
conn.commit()
答案 0 :(得分:0)
由于Exit是sql的关键字,因此必须先使用``先转义。
lst =['Offset', 'Name', 'PID', 'PPID', 'Thds', 'Hnds', 'Sess', 'Wow64', 'Start', '`Exit`', 'caseid']
table_name = "test"
createsqltable = """CREATE TABLE IF NOT EXISTS """ + table_name + " (" + " VARCHAR(250),".join(lst) + " VARCHAR(250))"
#print createsqltable
c.execute(createsqltable)
conn.commit()