2011-05-06 6 views
2

큰 문자열 목록이 있습니다. 목록의 각 문자열이 열의 이름 (모든 열은 정수) 인 MySQL 테이블을 만들어야합니다. (저는 파이썬에서 sqlalchemy를 사용하고 있습니다).파이썬 목록에서 MySql 테이블 만들기

예제를 살펴보면 schema.Table의 각 열을 명시 적으로 작성해야하는 것처럼 보입니다.이 목록은 큰 목록에는 적합하지 않습니다.

가능합니까?

덕분에

+0

문제가 무엇인가

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

그리고 여기가 프로그래밍 문자열 목록에서 열 이름을 만들려면이 사용할 수있는 방법의 확장 된 예제? 그것은 당신의 데이터에서 관련 SQL 문자열을 작성하는 직선이어야합니다! 지금까지 뭐 해봤 어? 이 숙제가 있니? –

+2

@Sentinel Nop. homewok 아닙니다. 죄송 합니다만 나머지 의견은 심각한 답변이 아닙니다. – AmirW

답변

2

현재 tuple unpacking를 사용할 수 있습니다.

>>> 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

관련 문제