【发布时间】:2018-12-11 15:02:21
【问题描述】:
我试图读取由数百万行组成的非常巨大的 MySQL 表。我使用过Pandas 库和chunks。请看下面的代码:
import pandas as pd
import numpy as np
import pymysql.cursors
connection = pymysql.connect(user='xxx', password='xxx', database='xxx', host='xxx')
try:
with connection.cursor() as cursor:
query = "SELECT * FROM example_table;"
chunks=[]
for chunk in pd.read_sql(query, connection, chunksize = 1000):
chunks.append(chunk)
#print(len(chunks))
result = pd.concat(chunks, ignore_index=True)
#print(type(result))
#print(result)
finally:
print("Done!")
connection.close()
如果我限制要选择的行数,实际上执行时间是可以接受的。但如果还想选择最少的数据(例如 100 万行),则执行时间会显着增加。
也许有更好/更快的方法从 python 中的关系数据库中选择数据?
【问题讨论】:
-
stackoverflow.com/questions/34180448/…这看起来和你的问题很相似