从python列表创建MySql表

时间:2011-05-06 16:34:45

标签: python mysql sqlalchemy

我有一大串字符串。我需要创建一个MySQL表,其中列表中的每个字符串都是一个列的名称(所有列都是整数)。 (我正在用sqlalchemy进行python)。

我查看了一些示例,看起来我需要在schema.Table中显式编写每一列,这对于大型列表来说并不实用。

有可能吗?

由于

1 个答案:

答案 0 :(得分: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