在数据库中缓存大型数据帧



我试图使用django.core.cache.backends.db.DatabaseCache后端将一个大熊猫数据帧缓存到MySQL数据库中。它适用于300000件物品,但不能用于更大的物品(例如400000件(。我可以增加缓存值的最大长度吗?提前谢谢。

import pandas as pd
import numpy as np
from django.core.cache import cache, caches
cache.set('data', pd.DataFrame(np.random.rand(300,1000))) # It works
cache.set('data', pd.DataFrame(np.random.rand(400,1000))) # It doesn't; no error, just no change in database
df = cache.get('data')
# It returns a dataframe with 300 rows × 1000 columns
# But I expect 400 rows x 1000 columns

原来原因是MySQL 5.7的max_allowed_packet默认值为4194304。

SET GLOBAL max_allowed_packet=1073741824;

已经解决了问题。谢谢丹布莱克的建议。

最新更新