6

Intro

I have a blob column on a Cassandra 1.2 column family, the table is defined as follows:

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

The problem:

The problem is that when I need to insert/update the blob column from Python using the cql library, I need to base 16 encode the contents of the column like this:

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)

The question:

Is there a way of executing this query without using the base 16 encoding(string) of the object? The reason for this is to reduce the overhead of sending a base 16 encoded string over the wire instead of plain bytes.

Thank in advance!

4

1 回答 1

1

Base64 or HEX?

if your question is not encoding into base64 yes you can, however you must provide your data into CQL in HEX format.

If your question is not coverting into HEX, No it is not possible.

As blob defined in CQL documentation

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.

So this clearly means that you need to send your data in HEX format.

于 2013-06-23T14:22:10.317 回答