Skip to main content
 首页 » 编程设计

Python pandas read_sql 返回生成器对象

2025年05月04日40duanxz

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

当我输入这一行时我没有看到任何错误

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

但是当我试图看到

df 

我收到这个错误

<generator object _query_iterator at 0x092D40F8> 

我对该错误的含义或可能导致该错误的原因进行的搜索没有得到令人满意的答案。

使用chunksize的原因是我有一个6000万行的Oracle db表,打算按位下载然后拼在一起,就像这里: How to create a large pandas dataframe from an sql query without running out of memory?

请您参考如下方法:

正如 chunksize 的解释所说,当指定时,它返回一个迭代器,其中 chunksize 是要包含在每个 block 中的行数。
所以你可以遍历结果并对每个 block 做一些事情:

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

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

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