Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 尝试运行sql查询以填充多个数据帧,但得到的dfs为空_Python_Sql_Pandas_Oracle - Fatal编程技术网

Python 尝试运行sql查询以填充多个数据帧,但得到的dfs为空

Python 尝试运行sql查询以填充多个数据帧,但得到的dfs为空,python,sql,pandas,oracle,Python,Sql,Pandas,Oracle,我有一个sql查询,需要在不同的时间段分别运行。我想在循环中运行它并填充所有数据帧。如果我一个接一个地运行查询,它工作得很好,但是循环输出一大堆空dfs conn=pyodbc.connectmy连接详细信息 时段 5月至6月19日[dt.dateday=1,月=5,年=2019,dt.dateday=1,月=7,年=2019] 7月19日=[dt.dateday=1,月=7,年=2019,dt.dateday=1,月=8,年=2019] 8月11日19=[dt.dateday=1,月=8,年=

我有一个sql查询,需要在不同的时间段分别运行。我想在循环中运行它并填充所有数据帧。如果我一个接一个地运行查询,它工作得很好,但是循环输出一大堆空dfs

conn=pyodbc.connectmy连接详细信息 时段 5月至6月19日[dt.dateday=1,月=5,年=2019,dt.dateday=1,月=7,年=2019] 7月19日=[dt.dateday=1,月=7,年=2019,dt.dateday=1,月=8,年=2019] 8月11日19=[dt.dateday=1,月=8,年=2019,dt.dateday=1,月=12,年=2019] 12月19日=[dt.dateday=1,月=12,年=2019,dt.dateday=1,月=1,年=2020] 1月2月20日=[dt.dateday=1,月=1,年=2020,dt.dateday=1,月=3,年=2020] 3月至5月20日[dt.dateday=1,月=3,年=2020,dt.dateday=20,月=5,年=2020] 月份=[五月六月十九日,七月十九日,八月十一月十九日,十二月十九日,一月二月二十日,三月五月二十日] 初始化空数据帧并将其放入列表中 mj19=j19=an19=d19=jf20=mm20=pd.DataFrame dfs=[mj19、j19、an19、d19、jf20、mm20] 在for循环下运行查询 对于df,zipdfs中的月份,月份: df=pd.read\u sql\u queryquery,conn,params=month 如果我运行这段代码,我会得到一个名为df的数据帧,尽管我从未初始化过这个名称,还有一大堆空的数据帧

这是我正在尝试运行的查询:

查询=选择源位置, 目的地位置, 三公吨 来自mq2.v_运动_摘要 开始时间>=在哪里?和 结束时间<?和 source_位置='18_至_JB CRUSH'或 源位置,如“AP11%”和 矿山\现场\代码='JB'和 类型='移动' 按来源和位置分组, 目的地位置 我在这里做错了什么?

A.这不是你想要的方式:

您正在为同一个空数据框创建6个引用,并将它们放入一个不再使用的列表中

B.这没什么用,嗯,有点像

您可以根据查询创建数据框。就这样。结束。 df变量在每个周期都会被覆盖,剩下的是循环的最后一个数据帧

C.解决办法


现在您有了数据帧列表。

谢谢!我也刚刚弄明白了。我现在只是初始化一个周期名dfs=['mj19','j19','an19','d19','jf20','mm20',和一个空的dict结果列表,而不是数据帧列表。然后在for cycle I do下:results[df]=pd.read\u sql\u queryquery,conn,params=month
# Initialise empty dataframes and put them in a list
mj19 = j19 = an19 = d19 = jf20 = mm20 = pd.DataFrame()
dfs = [mj19, j19, an19, d19, jf20, mm20]
# Run a query under a for cycle
for df, month in zip(dfs, months):
    df = pd.read_sql_query(query, conn, params=month)
# ... your time periods ...

months = [may_jun_19, jul_19, aug_nov_19, dec_19, jan_feb_20, mar_may_20]

# initialize an empty list
list_ = []

# run your queries
for df, month in zip(dfs, months):
    df = pd.read_sql_query(query, conn, params=month)

    # append the df created by your query to the list
    list_.append(df)