2010-07-13 10 views
10

हे, मैं उपयोग कर रहा हूँ कैसेंड्रा के लिए UUID उत्पन्नअजगर में

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

कैसेंड्रा के लिए एक TimeUUID बनाने के लिए है, लेकिन त्रुटि

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

यह नहीं है हो रही है

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

के साथ काम करें।

तुलना With = "TimeUUIDType" ध्वज के साथ उपयोग करने के लिए वैध टाइमयूयूआईडी बनाने का सबसे अच्छा तरीका क्या है?

धन्यवाद,
हेनरिक

उत्तर

4

आप अपने स्तंभ परिवार स्कीमा यह सुनिश्चित करना चाहिए कुंजी के रूप में UUID स्वीकार करता है। आपका कोड के रूप में बनाया एक स्तंभ परिवार के साथ काम (का उपयोग कर कैसेंड्रा-CLI) होगा:

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

इस सीएफ के लिए मूल्यों को जोड़ने के लिए:

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

ऐसा लगता है कि पंक्ति कुंजी और नहीं स्तंभ नाम के रूप में UUID उपयोग कर रहे हैं।

'compare_with: TimeUUIDType' विशेषता यह बताता है कि स्तंभ नाम, TimeUUIDType उपयोग करने के साथ तुलना में किया जाएगा यानी यह tells Cassandra how to sort the columns for slicing operations

आप उच्च स्तर अजगर ग्राहकों के किसी भी उपयोग विचार किया है? जैसे Tradedgy, Lazy Boy, Telephus या Pycassa

+0

मैं उल्लेख किया है चाहिए कि मैं usig pycassa हूँ, लेकिन ऐसा लगता है कि मुझे खुद को टाइमयूड्स बनाना है। –

+0

एक ही त्रुटि। शायद यह pycassa –

+1

के साथ एक समस्या है फिर से धन्यवाद। और आपके आईसीक्यू संदेश के लिए भी :) –