Postgres NOTIFY仅支持字符串文字(无二进制数据)。我已经设法用以下方式将它与腌制对象一起使用:
message = cPickle.dumps(objectFoo)
cursor = connection.cursor() # this is psycopg2 connection
cursor.execute("NOTIFY channelFoo, %s", [message])
但是,如果我在编码对象中放入一些棘手的字节(例如'\ x80'字符串)。从execute()
:
psycopg2.DataError:编码“UTF8”的无效字节序列:0x80
有解决方法吗?一个允许将pickled对象可靠地序列化为Postgres字符串,无论该对象包含什么数据?
答案 0 :(得分:4)
Python pickles是字节的二进制序列。如果你需要在一个字符串中放一个pickle,然后对其进行编码。典型的技术包括使用base64或uuencode。然后在接收方解码它。