从动态列表python创建mysql表

从动态列表python创建mysql表,mysql,python-2.7,Mysql,Python 2.7,我有一个动态变化的字符串列表。我需要创建一个MySQL表,其中列表中的每个字符串都是一个列的名称 以下是我的尝试: f = open(filepath,"r") pluginoutput= f.read() pluginoptojson = json.loads(pluginoutput) columnsnames = (pluginoptojson["columns"]) countcolumns = len(pluginoptojson["columns"]) count = 0 lst =

我有一个动态变化的字符串列表。我需要创建一个MySQL表,其中列表中的每个字符串都是一个列的名称

以下是我的尝试:

f = open(filepath,"r")
pluginoutput= f.read()
pluginoptojson = json.loads(pluginoutput)
columnsnames = (pluginoptojson["columns"])
countcolumns = len(pluginoptojson["columns"])
count = 0
lst = []
for name in columnsnames:
    if count < countcolumns:
        lst.append(str(name))
        count +=1

lst.append("caseid")
createsqltable = """CREATE TABLE IF NOT EXISTS %s""" + for t in columnsnames: """ """  (test)
c.execute(createsqltable)
conn.commit()
c.close()
conn.close()
f=open(文件路径,“r”)
pluginoutput=f.read()
pluginoptojson=json.loads(pluginoutput)
columnsnames=(pluginoptojson[“columns”])
countcolumns=len(pluginoptojson[“columns”])
计数=0
lst=[]
对于列名称中的名称:
如果计数<计数列:
一级追加(str(name))
计数+=1
第一个附加(“案例ID”)
createsqltable=“”如果不存在,则为列名称中的t创建表%s”“+”(测试)
c、 执行(createsqltable)
康涅狄格州提交
c、 关闭()
康涅狄格州关闭

我的思想快要爆炸了。任何帮助都将不胜感激

首先非常感谢Irnzcig

我刚刚测试了他的推荐信,效果很好。代码是:

pluginoutput= f.read()
pluginoptojson = json.loads(pluginoutput)
columnsnames = (pluginoptojson["columns"])
countcolumns = len(pluginoptojson["columns"])
count = 0
lst = []
for name in columnsnames:
    if count < countcolumns:
        lst.append(str(name))
        count +=1

lst.append("caseid")
table_name = "test1"
createsqltable = """CREATE TABLE IF NOT EXISTS """ + table_name + " (" + " VARCHAR(50),".join(lst) + " VARCHAR(50))"
c.execute(createsqltable)
conn.commit()

c.close()
conn.close()
gc.collect()
pluginoutput=f.read()
pluginoptojson=json.loads(pluginoutput)
columnsnames=(pluginoptojson[“columns”])
countcolumns=len(pluginoptojson[“columns”])
计数=0
lst=[]
对于列名称中的名称:
如果计数<计数列:
一级追加(str(name))
计数+=1
第一个附加(“案例ID”)
表_name=“test1”
createsqltable=“”如果不存在,则创建表“”“+表名称+”(“+”VARCHAR(50),“.join(lst)+”VARCHAR(50))”
c、 执行(createsqltable)
康涅狄格州提交
c、 关闭()
康涅狄格州关闭
gc.collect()

您可以发布一个输入文件的示例吗?谢谢。{“行”:[[2,12121,33,44,“ff”],[2,786,33,66,“ww”],“列”:[“id”,“testnumber”,“size”,“gnumber”,“filenname”]}请注意:列值正在从一个文件更改为另一个文件,我可能有120多个文件:)列类型如何?这不在json中吗?我想你得从台词中推断出来?在您的示例中,只有数字和字符串,但对于您的120个文件是相同的?varchar用于所有文件,因为我将所有文件都更改为字符串。列名称在计数和名称上都会改变,但最终它们将是varchar。那么表名呢?无论如何,有一个提示:从您的
columnnames
,而不是您的循环,我将执行类似
“VARCHAR(50),”的操作。加入(columnsnames)
。从那以后,您必须在表名前面加上最后一个“VARCHAR(50)”(或您想要用作默认值的任何大小)。您可以将它添加到
createsqltable
语句中,它应该是ok的。