pyodbc / sqlalchemy - 使用pd.read_sql_query读取表中的每一列。通过查询传递变量

时间:2016-08-25 21:27:06

标签: python sql pandas sqlalchemy pyodbc

我想在循环中通过pd.read_sql_query传递一个变量'single_column':

for single_column in columns_list:    
    df_trial_queries = pd.read_sql_query("SELECT single_column FROM dw.db.table;",db_cnxn)

我尝试使用这样的东西:

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 个答案:

答案 0 :(得分:1)

你不能在SQL中“paremeterize”表名或列名(SQL只允许“参数化”literals),但你可以在Python级别轻松完成:

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)

注意:这是非常低效的方式!我确信有更好的方法来实现你的目标,但是你必须对你将要使用这个循环实现的目标有所了解......