str - Generar UUID para Cassandra en Python
uuid python 3 (2)
Je, estoy usando
cf.insert(uuid.uuid1().bytes_le, {''column1'': ''val1''})
(pycassa)
para crear un TimeUUID para Cassandra, pero obteniendo el error
InvalidRequestException:
InvalidRequestException(why=''UUIDs must be exactly 16 bytes'')
No funciona con
uuid.uuid1()
uuid.uuid1().bytes
str(uuid.uuid1())
ya sea.
¿Cuál es la mejor manera de crear un TimeUUID válido para usar con el indicador CompareWith = "TimeUUIDType"?
Gracias,
Henrik
Debe asegurarse de que su esquema de familia de columnas acepte el UUID como clave. Su código funcionará con una familia de columnas creada como (usando cassandra-cli):
create column family MyColumnFamily
with column_type = ''Standard''
and comparator = ''AsciiType''
and default_validation_class = ''BytesType''
and key_validation_class = ''TimeUUIDType'';
Para agregar valores a este CF:
import pycassa
pool = pycassa.ConnectionPool(''Keyspace1'')
cf = pycassa.ColumnFamily(pool, ''MyColumnFamily'')
cf.insert(uuid.uuid1(), {''column1'': ''val1''})
Parece que estás usando el uuid como la clave de la fila y no como el nombre de la columna.
El atributo '' compare_with: TimeUUIDType '' especifica que los nombres de las columnas se compararán con el uso del TimeUUIDType, es decir, le dice a Cassandra cómo ordenar las columnas para las operaciones de corte
¿Has considerado usar cualquiera de los clientes de python de alto nivel? Ej. Tradedgy , Lazy Boy , Telephus o Pycassa