pandas postgres binary:没有名为indexes.base的模块

时间:2017-07-13 16:36:13

标签: python postgresql pandas pickle psycopg2

我正在尝试从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时,检索工作没有任何问题。我不明白为什么它应该是一个熊猫问题,我能做些什么呢。

0 个答案:

没有答案