用泡菜将Python对象保存在postgres表中

时间:2019-08-24 23:23:28

标签: python postgresql pickle

我有一个创建某些对象的python脚本。 我希望能够将这些对象保存到我的postgres数据库中,以备后用。

我的想法是我可以腌制一个对象,然后将其存储在数据库中的字段中。 但是我会绕一圈,讨论如何存储,检索和使用数据。

我尝试将泡菜二进制字符串存储为text,但是我不知道如何编码/转义它。然后如何将字符串作为二进制字符串加载以进行修复。

我尝试使用bytea和不使用psycopg2.Binary(data)来存储数据。 然后读入缓冲区并使用base64.b64encode(result)进行编码,但结果不一样,无法解开。

有没有一种简单的方法可以在SQL(postgres)数据库中存储和检索python对象?

1 个答案:

答案 0 :(得分:3)

在@SergioPulgarin发表评论之后,我尝试了以下有效的方法!

N.B Edit2 @Tomalak发表评论

存储:

  1. 将对象固定为二进制字符串

    pickle_string = pickle.dumps(object)

  2. 将泡菜字符串存储在postgres中的bytea(二进制)字段中。在Psycopg2中使用简单的INSERT查询

检索:

  1. Select在Psycopg2中的字段。 (简单的SELECT查询)

  2. 解开解码结果

    retrieved_pickle_string = pickle.loads(decoded_result)

希望可以帮助任何尝试做类似事情的人!