質問

へぇ, 私は使っています

cf.insert(uuid.uuid1().bytes_le, {'column1': 'val1'}) (ピカッサ)

CassandraのTimeUUIDを作成しますが、エラーが発生します

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

それはで動作しません

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

どちらか。

CompareWith="TimeUUIDType"フラグで使用する有効なTimeUUIDを作成する最良の方法は何ですか?

ありがとう!,
ヘンリク

役に立ちましたか?

解決

列ファミリースキーマがキーとして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を使用しているようです。

その'compare_with:TimeUUIDType'attributeは、列名がTimeUUIDTypeを使用して比較されることを指定します。 Cassandraにソート方法を指示します コラム スライス操作のため

高レベルのpythonクライアントの使用を検討しましたか?例: トレードディジー, レイジーボーイ, テレフス または ピカッサ

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top