2013-06-27 29 views
0

如何做到这样的如何添加目前列名的列表对象为表

cursor.execute("create table" + config.table + config.cols) 

所有的配置名称在不同的文件和cols是这样

cols = [ 
    "name varchar(50)", 
    "address varchar(50)", 
    "etc " 

一个列表对象我有这样

TypeError: cannot concatenate 'str' and 'list' objects 

一个错误如何与对象列表串连海峡... 请帮助!

+0

您是否试图将列表转换为字符串? –

+0

['str.join()'](http://docs.python.org/2/library/stdtypes.html#str.join) – grc

回答

1

通常,当您想要将一个列表(或数组)与一个字符串结合使用时,您需要使用join()。 假设config.table是一个字符串,config.cols是一个数组/列表,你可能想是这样的:

cursor.execute("create table " + config.table + " (" + ", ".join(config.cols) + ")") 

这结合了所有个体的cols,通过将它们之间用逗号(而不是之前的第一或最后一次)。我还在字段定义的周围添加了一个(),并在字表和表名之间添加了一个空格。

如果它仍然不起作用,请尝试打印出来的字符串,而不是执行它,以确保它是有效的SQL。

+0

非常感谢你.....一件事我们该怎么做使用字典... – user2470026

+1

使用mydict.items()将其转换为(键,值)元组列表。使用列表理解将元组转换为字符串。然后像上面那样使用连接。 'mycolstojoin = [“%s%s”%(field [0],field [1])for mydict.items()](假设有一个'mydict == {“name”:“varchar(50)” ...}') –

+0

再次感谢它帮了我很多.... – user2470026