cassandra1.2使用python和cql库插入/更新blob列类型

vdgimpew  于 2021-06-15  发布在  Cassandra
关注(0)|答案(1)|浏览(370)

简介
我在cassandra 1.2列族中有一个blob列,该表定义如下:

CREATE TABLE objects (
   id        text,
   obj       blob,
   PRIMARY KEY (id)
);

问题是:
问题是,当我需要使用cql库从python插入/更新blob列时,我需要对列的内容进行base16编码,如下所示:

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编码字符串而不是普通字节的开销。
提前谢谢!

qyyhg6bp

qyyhg6bp1#

base64还是hex?
如果您的问题不是编码成base64是的,您可以,但是您必须提供十六进制格式的cql数据。
如果你的问题没有转化成十六进制,那是不可能的。
如cql文档中定义的blob
blob常量是由0xx+定义的十六进制数,其中hex是十六进制字符,例如[0-9a-fa-f]。例如,0xcafe。
所以这显然意味着您需要以十六进制格式发送数据。

相关问题