我正在尝试在以下列系列中存储一些时间序列数据:
create column family t_data with comparator=TimeUUIDType and default_validation_class=UTF8Type and key_validation_class=UTF8Type;
我以这种方式成功插入数据:
data={datetime.datetime(2013, 3, 4, 17, 8, 57, 919671):'VALUE'}
key='row_id'
col_fam.insert(key,data)
如您所见,使用 datetime 对象作为列名 pycassa 可以正确转换为 timeUUID 对象。
[default@keyspace] get t_data[row_id];
=> (column=f36ad7be-84ed-11e2-af42-ef3ff4aa7c40, value=VALUE, timestamp=1362423749228331)
有时,应用程序需要更新一些数据。问题是当我尝试更新该列时,传递相同的 datetime 对象,pycassa 创建一个不同的 UUID 对象(时间部分是相同的),所以它不是更新列,而是创建另一个。
[default@keyspace] get t_data[row_id];
=> (column=f36ad7be-84ed-11e2-af42-ef3ff4aa7c40, value=VALUE, timestamp=1362423749228331)
=> (column=**f36ad7be**-84ed-11e2-b2fa-a6d3e28fea13, value=VALUE, timestamp=1362424025433209)
问题是,如何使用传递 datetime 对象的 pycassa 更新基于 TimeUUID 的列?或者,如果这不是正确的方法,推荐的方法是什么?