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

Mysql 在数据库中缓存大型数据帧,mysql,django,pandas,caching,Mysql,Django,Pandas,Caching,我试图使用django.core.cache.backends.db.DatabaseCache backend将一个大熊猫数据帧缓存到MySQL数据库中。它适用于300000个项目,但不适用于任何更大的项目(例如400000个项目)。我可以增加缓存值的最大长度吗?提前谢谢 import pandas as pd import numpy as np from django.core.cache import cache, caches cache.set('data', pd.DataFra

我试图使用django.core.cache.backends.db.DatabaseCache backend将一个大熊猫数据帧缓存到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允许的最大数据包的默认值是4194304

SET GLOBAL max_allowed_packet=1073741824;

解决了这个问题。感谢danblack的建议。

产生了什么错误?没有错误,但它返回的是较小的旧数据帧。MySQL的默认最大允许数据包是4MB,不知道这是不是原因,如果有一个(原因)是它的历史(甚至可能是歇斯底里的)。将其设置得过大不会产生不良影响。