2013-05-27 12 views
6

wprowadzajécyCassandro 1,2 wstawiania/zaktualizowanie typu kolumny kropelka Pythonie i bibliotekę CQI

Mam kolumny blob na rodziny na kolumnie Cassandro 1.2, tabela definiuje się w następujący sposób:

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

problem:

problemem jest to, że gdy trzeba włożyć/zaktualizuj kolumnę kropelka Pythonie użyciu biblioteki CQI, potrzebne do podstawy 16 kodowania z treść s kolumny jak ten:

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) 

Pytanie:

Czy istnieje sposób wykonywanie kwerendy bez użycia kodowania podstawy 16 (String) obiektu? Powodem tego jest zmniejszenie narzutu wysyłania zakodowanych w bazie 16 ciągów na przewód zamiast zwykłych bajtów.

Z góry dziękuję!

Odpowiedz

1

Base64 lub HEX?

jeśli twoje pytanie nie koduje w base64 tak, możesz jednak podać swoje dane do CQL w formacie HEX.

Jeśli twoje pytanie nie dotyczy HEX, nie jest to niemożliwe.

Gdy kropelka zdefiniowano w CQL documentation

stałej o blob jest określona przez liczbę szesnastkową 0XX + jako sześciokątna charakter szesnastkowo, na przykład [0-9a-fA-F]. Na przykład 0xcafe.

Oznacza to, że musisz wysłać swoje dane w formacie HEX.