我正在尝试从postgresql数据库中检索pandas数据帧。我将这些数据帧作为二进制文件写入数据库,通过:
PANDAS_DATAFRAME = cPickle.dumps(PANDAS_DATAFRAME, -1)
然后sql INSERT INTO语句写道:
psycopg2.Binary(PANDAS_DATAFRAME)
进入数据库。
我基本上使用了一个技巧来注册psycopg2 Binary类型,如下所示:
def cast_pickle(data, cur):
if data is None: return None
return cPickle.loads(str(psycopg2.BINARY(data, cur)))
psycopg2.extensions.register_type(
psycopg2.extensions.new_type(
psycopg2.BINARY.values, 'BINARY-PICKLE', cast_pickle))
然而,当我现在尝试用
恢复二进制数据时sql_cmd = "SELECT * FROM THE_TABLE"
sql_db_pd = pandas.read_sql_query(sql_cmd, psycopg2.connect(**params))
我收到错误:没有名为indexes.base的模块 当 cPickle.loads(str(psycopg2.BINARY(data,cur)))正在执行时(见上文)。
当我将大熊猫从0.2降级到0.18时,检索工作没有任何问题。我不明白为什么它应该是一个熊猫问题,我能做些什么呢。