PythonでCassandra用のUUIDを生成する
質問
へぇ, 私は使っています
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クライアントの使用を検討しましたか?例: トレードディジー, レイジーボーイ, テレフス または ピカッサ
所属していません StackOverflow