当通过to_sqlsqlalchemy 和pandas 以及指定的chucksize 将巨大的pandas数据帧插入sqlite时,会出现内存错误。
起初我以为这是一个问题,to_sql但是我尝试了一种解决方法,而不是使用我使用的块大小for i in range(100): df.iloc[i * 100000:(i+1):100000].to_sql(...),这仍然导致错误。
似乎在某些情况下,通过sqlalchemy重复插入sqlite会导致内存泄漏。
通过一个最小的示例,我很难尝试复制在转换数据时发生的内存泄漏。但这非常接近。
import string
import numpy as np
import pandas as pd
from random import randint
import random
def make_random_str_array(size=10, num_rows=100, chars=string.ascii_uppercase + string.digits):
return (np.random.choice(list(chars), num_rows*size)
.view('|U{}'.format(size)))
def alt(size, num_rows):
data = make_random_str_array(size, num_rows=2*num_rows).reshape(-1, 2)
dfAll = pd.DataFrame(data)
return dfAll
dfAll = alt(randint(1000, 2000), 10000)
for i in range(330):
print('step ', i)
data = alt(randint(1000, 2000), 10000)
df = pd.DataFrame(data)
dfAll = …Run Code Online (Sandbox Code Playgroud)