Genera UUID per Cassandra in Python
Domanda
heh, Sto usando
cf.insert(uuid.uuid1().bytes_le, {'column1': 'val1'})
(Pyassa)
per creare un timeuuid per Cassandra, ma ottenere l'errore
InvalidRequestException:
InvalidRequestException(why='UUIDs must be exactly 16 bytes')
.
Non funziona con
uuid.uuid1()
uuid.uuid1().bytes
str(uuid.uuid1())
.
entrambi.
Qual è il modo migliore per creare un timeuuid valido da utilizzare con il flag di confronto="timeuuidtype"?
Grazie,
Henrik
Soluzione
È necessario assicurarsi che il tuo schema familiare della colonna accetti UUID come chiave.Il tuo codice funzionerà con una famiglia di colonne creata come (usando Cassandra-CLI):
create column family MyColumnFamily
with column_type = 'Standard'
and comparator = 'AsciiType'
and default_validation_class = 'BytesType'
and key_validation_class = 'TimeUUIDType';
.
Per aggiungere valori a questo cf:
import pycassa
pool = pycassa.ConnectionPool('Keyspace1')
cf = pycassa.ColumnFamily(pool, 'MyColumnFamily')
cf.insert(uuid.uuid1(), {'column1': 'val1'})
. Altri suggerimenti
Sembra che tu stia usando l'UUID come tasto ROW e non il nome della colonna.
The ' Confronta_with: Timeuuidtype ' Attributo Specifica che i nomi delle colonne saranno confrontati con l'utilizzo del timeuuidtype, cioè Tells Cassandra Come ordinare le colonne per le operazioni di affettatura
Hai pensato di utilizzare uno dei clienti Python di alto livello?Per esempio. TradeDy , ragazzo pigro , Telephus o Pyassa