pyodbc/sqlalchemy - 使用 pd.read_sql_query 读取表中的每一列。通过查询传递变量
Posted
技术标签:
【中文标题】pyodbc/sqlalchemy - 使用 pd.read_sql_query 读取表中的每一列。通过查询传递变量【英文标题】:pyodbc/sqlalchemy - read each column in the table using pd.read_sql_query. Pass variable through the query 【发布时间】:2016-08-25 21:27:05 【问题描述】:我想在循环中通过 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】:您不能在 SQL 中“参数化”表或列名称(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)
注意:这是非常低效的方式!我确信有更好的方法来实现您的目标,但您必须阐明使用此循环要实现的目标...
【讨论】:
从从服务器读取到数据框的每一列,我想运行一些数据分析和描述性统计,然后保存到 csv 文件中。我这样做是因为表有 5200 万行和 80 列 @dsl1990,some data profiling and descriptive statistics
可以在SQL server端做吗?
我可以这样做,但是有很多表,我将不得不编写 sql 查询。我想为此制作自动循环。我将此标记为正确答案,但如果我必须传递两个这样的变量而不是一个,你可以编辑它吗以上是关于pyodbc/sqlalchemy - 使用 pd.read_sql_query 读取表中的每一列。通过查询传递变量的主要内容,如果未能解决你的问题,请参考以下文章
pandas使用pd.DatetimeIndex函数将混合格式的日期数据(包含字符串datetime对象pd.Timestamp)数据转化为时间索引数据DatetimeIndex