Python pandas的read_sql函数返回一个生成器对象。
Python pandas的read_sql函数返回一个生成器对象。
我正在使用pyodbc和pandas read_sql从Oracle数据库中提取数据。
当我输入这行代码时,我没有看到任何错误
df = pd.read_sql(sql_str,cnxn,chunksize=10)
但是当我尝试查看
df
时,我得到了这个错误
我搜索了一下这个错误的含义或可能引起它的原因,但没有找到令人满意的答案。
使用chunksize的原因是我有一个包含6000万行的Oracle数据库表,并计划分批下载然后将它们组合在一起,就像这里一样:
问题的原因是:使用pandas的read_sql_query函数读取数据库时,当指定了chunksize参数时,函数返回的是一个生成器对象,而不是一个DataFrame对象。这导致无法直接将所有的查询结果合并成一个DataFrame对象。
解决方法是:使用for循环迭代生成器对象,将每个chunk(查询结果的一部分)处理后添加到一个列表中。然后,使用pd.concat函数将所有处理后的chunk合并成一个DataFrame对象。
具体的代码示例是:
chunks = pd.read_sql_query(sql_str, engine, chunksize=10) processed_chunks = [] for chunk in chunks: processed_chunk = do_something_with(chunk) processed_chunks.append(processed_chunk) result = pd.concat(processed_chunks)
通过以上步骤,我们可以将所有的查询结果合并成一个DataFrame对象result。