2011-05-06 82 views
2

我有一個很大的字符串列表。我需要創建一個MySQL表,其中列表中的每個字符串都是列的名稱(所有列都是整數)。 (我在python與sqlalchemy)。從python列表創建MySql表

我看了一些例子,它看起來像我需要明確寫入schema.Table中的每一列,這對大型列表來說並不實用。

可能嗎?

感謝

+0

問題是什麼?它應該直接從數據中寫入相關的SQL字符串?!你試過什麼了?這是功課嗎? – 2011-05-06 16:49:24

+2

@Sentinel Nop。不是家庭主婦。對不起,但您的評論的其餘部分是不值得認真的答案。 – AmirW 2011-05-06 18:15:20

回答

2

你可以在這裏使用tuple unpacking

>>> column_names = ['col1', 'col2', 'col3'] 
>>> columns = (Column(name, Integer) for name in column_names) 
>>> table = Table('table_name', metadata, *columns) # unpacks Column instances 

下面是你如何可以使用它來編程方式從字符串列表創建列名的擴展的例子:

>>> column_names = ['col1', 'col2', 'col3'] 
>>> columns = (Column(name, Integer) for name in column_names) 
>>> table = Table('data', metadata, Column('id', Integer, primary_key=True), *columns) 
>>> class Data(object): 
...:  def __init__(self, *args): 
...:   for name, arg in zip(column_names, args): 
...:    setattr(self, name, arg) 
...:    
...: 
>>> mapper(Data, table) 
<<< <Mapper at 0x1026e9910; Data> 
>>> data = Data(1, 2, 3) 
>>> [x for x in dir(data) if x.startswith('col')] # see if all of our columns are there 
<<< ['col1', 'col2', 'col3'] 
>>> data.col3 # great! 
<<< 3   
+0

整潔!謝謝。 – AmirW 2011-05-06 18:12:49