嘿, 我正在使用
cf.insert(uuid.uuid1().bytes_le, {'column1': 'val1'})
(pycassa)
为Cassandra创建TimeUUID,但收到错误
InvalidRequestException:
InvalidRequestException(why='UUIDs must be exactly 16 bytes')
不适用于
uuid.uuid1()
uuid.uuid1().bytes
str(uuid.uuid1())
或者
创建与CompareWith =“TimeUUIDType”标志一起使用的有效TimeUUID的最佳方法是什么?
谢谢,
亨利克
答案 0 :(得分:9)
看起来您使用的是uuid作为行键而不是列名。
' compare_with:TimeUUIDType '属性指定将使用TimeUUIDType比较列名称,即tells Cassandra how to sort the columns for slicing operations
您是否考虑过使用任何高级python客户端?例如。 Tradedgy,Lazy Boy,Telephus或Pycassa
答案 1 :(得分:4)
您必须确保列族架构接受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'})