2016-08-25 4 views
0

내가 루프 pd.read_sql_query을 통해 변수 'single_column'을 전달하려는 통해 변수를 전달 전혀pyodbc/sqlalchemy - pd.read_sql_query를 사용하여 테이블의 각 열을 읽습니다. 나는이 같은 것을 사용하려고</p> <pre><code>for single_column in columns_list: df_trial_queries = pd.read_sql_query("SELECT single_column FROM dw.db.table;",db_cnxn) </code></pre> <p>: 쿼리

for single_column in columns_list:  
     df_trial_queries = pd.read_sql_query("SELECT %(column_name)s FROM dw.db.table;",db_cnxn,params = {'column_name':single_column}) 

행운을!

답변

1

할 수 있습니다 SQL에서하지 "paremeterize"테이블 또는 열 이름 (SQL은 literals 전용 "매개 변수화"할 수 있습니다)하지만, 파이썬 수준에서 그것을 쉽게 할 수 있습니다

In [25]: single_column = 'col1' 

In [52]: table = 'dw.db.table' 

In [53]: "SELECT {} FROM {}".format(single_column, table) 
Out[53]: 'SELECT col1 FROM dw.db.table' 

또는 귀하의 경우 :

df_trial_queries = pd.read_sql_query("SELECT {} FROM dw.db.table".format(single_column), db_cnxn) 

참고 : 매우 비효율적입니다. 목표를 달성하는 더 좋은 방법이있을 것이라고 확신하지만이 루프를 사용하여 달성하려는 목표에 대해 밝혀야합니다.

+0

서버에서 데이터 프레임 , 일부 데이터 프로파일 링 및 설명 통계를 실행하고 CSV 파일로 저장하려고합니다. 나는 테이블에 5200 만 행과 80 열 – dsl1990

+0

@ dsl1990이 있기 때문에 '일부 데이터 프로파일 링 및 설명 통계'를 SQL 서버 측에서 수행 할 수 있습니까? – MaxU

+0

할 수 있지만 많은 테이블이 있고 SQL 쿼리를 작성해야합니다. 나는 이것을 위해 자동화 된 루프를 만들고 싶었다. 나는 정답으로 표시하고 있지만 편집 할 수 있겠습니까? 하나 대신 – dsl1990