腌制对象是否可以可靠地编码为 Postgres 字符串(与 NOTIFY 一起发送)?

Jan*_*bel 1 python postgresql psycopg2 pickle

Postgres NOTIFY仅支持字符串文字(无二进制数据)。我设法通过以下方式将它与腌制对象一起使用:

message = cPickle.dumps(objectFoo)
cursor = connection.cursor() # this is psycopg2 connection
cursor.execute("NOTIFY channelFoo, %s", [message])
Run Code Online (Sandbox Code Playgroud)

但是,如果我将一些棘手的字节放入编码对象(例如 '\x80' 字符串)。从execute()以下位置返回错误:

psycopg2.DataError:编码“UTF8”的无效字节序列:0x80

有没有解决的办法?一种无论对象保存什么数据都可以可靠地将腌制对象序列化为 Postgres 字符串的方法?

dsh*_*dsh 5

Python 泡菜是字节的二进制序列。如果您需要将泡菜放入字符串中,请对其进行编码。典型的技术包括使用 base64 或 uuencode。然后在接收端解码。