Python pandas read_sql返回生成器对象

时间:2015-07-01 19:27:40

标签: python sql pandas

我使用pyodbc和pandas read_sql从Oracle数据库中提取数据。

当我输入此行时,我看到没有错误

df = pd.read_sql(sql_str,cnxn,chunksize=10)

但是当我试着看

df

我收到此错误

<generator object _query_iterator at 0x092D40F8>

我对这个错误的含义或可能造成的错误的搜索没有得出令人满意的答案。

使用chunksize的原因是我有一个拥有6000万行的Oracle数据库表,并计划下载并将它们放在一起,就像这里: How to create a large pandas dataframe from an sql query without running out of memory?

2 个答案:

答案 0 :(得分:4)

正如chunksize的解释所说,当指定时,返回一个迭代器,其中chunksize是每个块中包含的行数
因此,您可以遍历结果并对每个块执行某些操作:

for chunk in pd.read_sql_query(sql_str, engine, chunksize=10):
    do_something_with(chunk)

通常,您可以处理块并将其添加到列表中,然后在此循环之后将此列表中的所有已处理块一起汇总。

另请参阅有关sql查询的文档:http://pandas.pydata.org/pandas-docs/stable/io.html#querying以获取示例。

答案 1 :(得分:0)

我更愿意评论,但还不能。无论如何,这不是告诉您df是生成器对象的错误。