简介
我在Cassandra 1.2列系列上有一个blob列,该表定义如下:
CREATE TABLE objects (
id text,
obj blob,
PRIMARY KEY (id)
);
问题:
问题在于,当我需要使用cql库从Python插入/更新blob列时,我需要基于16编码列的内容,如下所示:
import cPickle
import cql
...
def save_object(connection, obj):
object['id'] = obj['id']
object['obj'] = cPickle.dumps(obj).encode("hex")
cql_statement = "INSERT INTO objects (id, obj) values (:id, :obj)"
cursor = connection.cursor()
cursor.execute(cql_statement, object)
问题:
有没有办法在不使用对象的基本16编码(字符串)的情况下执行此查询?这样做的原因是减少了通过线路发送基本16编码字符串而不是普通字节的开销。
提前感谢!
答案 0 :(得分:1)
Base64还是HEX?
如果你的问题没有编码到base64中,你可以,但是你必须以十六进制格式将数据提供给CQL。
如果您的问题未转换为十六进制,则不可能。
中定义的blobblob常量是由0xX +定义的十六进制数,其中hex是十六进制字符,例如[0-9A-FA-F]。例如,0xcafe。
因此,这显然意味着您需要以HEX格式发送数据。