相关疑难解决方法(0)

通过sqlalchemy重复插入sqlite数据库会导致内存泄漏?

当通过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)

python sqlite memory-leaks sqlalchemy pandas

4
推荐指数
1
解决办法
439
查看次数

标签 统计

memory-leaks ×1

pandas ×1

python ×1

sqlalchemy ×1

sqlite ×1