2015-07-01 97 views
0

我使用pyodbc和pandas read_sql从Oracle数据库中提取数据。Python pandas read_sql返回生成器对象

我看不出有什么错误,当我进入这一行

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?

+0

具体而言,你看到的不是'错误',它表示'df'对象是一个生成器对象。 – joris

回答

0

我宁愿发表评论,但还不能。无论如何,这不是一个错误,告诉你df是一个生成器对象。

+0

谢谢。你的意思是这个错误是没有意义的? – David

+0

正如其他答案表明您可以遍历生成器对象以获取特定的数据点。 – gffbss

2

由于chunksize的解释说明,在指定时,其返回迭代器,其中chunksize是包含在每个块中的行数。
所以,你可以遍历结果,做一些与每块:

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

通常,您可以处理该块并将其添加到一个列表,然后在此之后的for循环的concat在这个列表中的所有处理块一起。

另请参阅sql查询文档:http://pandas.pydata.org/pandas-docs/stable/io.html#querying为例。