1

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

有没有解决的办法?一种允许可靠地将腌制对象序列化为 Postgres 字符串的方法,无论对象包含什么数据?

4

1 回答 1

5

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

于 2013-03-06T23:00:12.280 回答