2013-06-27 33 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