#python #mysql #sqlalchemy
#python #mysql #sqlalchemy
Вопрос:
У меня есть большой список строк. Мне нужно создать таблицу MySQL, где каждая строка в списке является именем столбца (все столбцы являются целыми числами). (Я работаю на python с sqlalchemy).
Я посмотрел на примеры, и, похоже, мне нужно явно записать каждый столбец в схеме.Таблица, которая не так практична для большого списка.
Возможно ли это?
Спасибо
Комментарии:
1. В чем проблема? Это должно быть простое написание связанной строки SQL из ваших данных?! Что вы уже пробовали? Это домашнее задание?
2. @Sentinel Nop. Не homewok. Извините, но остальная часть вашего комментария не стоит серьезного ответа.
Ответ №1:
Вы могли бы использовать распаковку кортежей здесь.
>>> 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