从动态列表python创建mysql表

时间:2016-02-02 09:03:34

标签: python mysql

使用动态列表创建表时遇到问题。我一直在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()

1 个答案:

答案 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()