python - Cassandra 1.2 使用 Python 和 cql 库插入/更新 blob 列类型

标签 python cassandra cql

简介

我在 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)

问题:

有没有一种方法可以在不使用对象的 base 16 编码(字符串)的情况下执行此查询?这样做的原因是为了减少通过线路发送 base 16 编码字符串而不是普通字节的开销。

提前致谢!

最佳答案

Base64 还是十六进制?

如果您的问题不是编码成 base64,是的,您可以,但是您必须以 HEX 格式将数据提供到 CQL。

如果您的问题不是转换为十六进制,不,这是不可能的。

CQL documentation 中定义的 blob

A blob constant is an hexadecimal number defined by 0xX+ where hex is an hexadecimal character, e.g. [0-9a-fA-F]. For example, 0xcafe.

所以这显然意味着您需要以 HEX 格式发送数据。

关于python - Cassandra 1.2 使用 Python 和 cql 库插入/更新 blob 列类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16780251/

相关文章:

python - 如何使用 Python 和 Flask 转发 HTTP 范围请求?

python - numpy savetxt 没有添加逗号分隔符

python - 使用python发送邮件

database - Cassandra CLUSTERING ORDER BY 不做我期望的

cassandra - 是否可以使用cql连续查询集合?

java - 使用 IN 子句过滤 Spark Cassandra 连接器

Python 回调到主模块(函数和变量)

cassandra - 如何使用CQL更新Cassandra整数列?

scala - Spark-cassandra-connector:toArray 不起作用

cassandra - cqlsh 入门给出了无效的语法