Вопрос

хех, Я использую

cf.insert(uuid.uuid1().bytes_le, {'column1': 'val1'}) (Pycassa)

Чтобы создать timeuuue для кассандры, но получить ошибку

InvalidRequestException: 
InvalidRequestException(why='UUIDs must be exactly 16 bytes')
.

Это не работает с

uuid.uuid1()
uuid.uuid1().bytes
str(uuid.uuid1())
.

тоже.

Какой лучший способ создать действительный Timeuuud для использования с призванным флагом= «timeuuittype»?

Спасибо,

Хенрик

Это было полезно?

Решение

Вы должны убедиться, что ваша семейная схема столбца принимает UUID в качестве ключа.Ваш код будет работать с семейством столбца, созданной как (с помощью Cassandra-CLI):

create column family MyColumnFamily
  with column_type = 'Standard'
  and comparator = 'AsciiType'
  and default_validation_class = 'BytesType'
  and key_validation_class = 'TimeUUIDType';
.

Чтобы добавить значения в этот CF:

import pycassa
pool = pycassa.ConnectionPool('Keyspace1')
cf = pycassa.ColumnFamily(pool, 'MyColumnFamily')
cf.insert(uuid.uuid1(), {'column1': 'val1'})
.

Другие советы

Похоже, вы используете UUID в качестве ключа строки, а не имя столбца.

" COMFORE_WITH: TimeuuiDType 'Attribute Указывает, что имена столбцов будут сравниваться с использованием TimeUUIDTYPE, т. Е. Это рассказывает кассандру, как отсортировать столбцы для операций нарезки

Вы учитывали, используя любой из клиентов Python высокого уровня?Например. Торговый объект , Lazy Boy , Telepus или pycassa

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top