首页 >数据库 >mysql教程 >如何在不耗尽内存的情况下将大型 SQL 查询读取到 Pandas DataFrame 中?

如何在不耗尽内存的情况下将大型 SQL 查询读取到 Pandas DataFrame 中?

Susan Sarandon
Susan Sarandon原创
2025-01-13 09:14:44929浏览

How Can I Read Large SQL Queries into Pandas DataFrames Without Running Out of Memory?

将大型 SQL 查询导入 Pandas DataFrame 时避免内存错误

在检索大型数据集时,使用大型 SQL 数据库通常会带来挑战。 尝试将超过一百万行的整个表直接加载到 Pandas DataFrame 中很容易导致内存错误。 下面的代码说明了这个问题:

<code class="language-python">import pandas.io.sql as psql
sql = "SELECT TOP 2000000 * FROM MyTable" 
data = psql.read_frame(sql, cnxn)</code>

此方法很容易失败,如果生成的 DataFrame 超出可用 RAM,则会导致“MemoryError”。

Pandas 从 0.15 版本开始,提供了一个强大的解决方案:chunksize 参数。这允许您以更小的、可管理的部分读取和处理 SQL 查询。

以下是实施此解决方案的方法:

<code class="language-python">sql = "SELECT * FROM My_Table"
for chunk in pd.read_sql_query(sql , engine, chunksize=5):
    print(chunk)</code>

通过指定chunksize,Pandas 会增量检索数据。 每个块都单独处理,防止内存过载。上面的例子打印每个块; 您可以根据需要调整它以对每个块执行其他操作。

该技术提供了一种实用且节省内存的方法来处理大型 SQL 查询,即使对于大量数据集也能确保数据处理顺利。

以上是如何在不耗尽内存的情况下将大型 SQL 查询读取到 Pandas DataFrame 中?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn