2015-07-01 95 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爲例。