【发布时间】:2020-08-02 00:55:56
【问题描述】:
我想从 SQL 数据库中检索大约 1 亿行和 30 列数据到一个数据框中,我可以在其中根据某些要求进行排序和过滤。我只有 2 Gig 内存。即使我使用的是 chunksize,一切都会停止。这是我的代码。
import pymysql
chunksize = 100
import pandas as pd
import pymysql.cursors
from urllib import parse```
sqlEngine = create_engine('mysql+pymysql://username:%s@localhost/db' % parse.unquote_plus('password'))
dbConnection = sqlEngine.connect()
for chunk in pd.read_sql("select * from db.db_table", dbConnection, chunksize = chunksize):
print(chunk)
Do somrthing with chunk(chunk is the dataframe that has all the 100 million columns )
我已经减少了我的块大小,但仍然没有得到任何东西。
【问题讨论】:
-
使用像
select * from db.db_table这样的查询,数据库仍然必须开始检索所有 3000 万行。选择一个您可以排序的索引列,按它排序并添加合适的LIMIT ... OFFSET ...开头 -
我需要全部数据进行数据分析。
-
什么分析?您可能可以在 SQL 中做很多事情,而不是尝试将内容加载到 Pandas 中。
标签: python mysql pandas large-data