我是python的初学者。我必须从cassandra DB检索UDT数据并使用更改的值更新回来。但是在从Cassandra读取时分配UDT值会转换为datetime.datetime(),这会阻止我更新回Cassandra。
Create Table TblDet
(Col1PK Text
,ColUDT map<text,frozen<typ_det>>
,Primary key Col1PK);
Create Type typ_det
(Ord_St_dt timestamp
,Ord_end_dt timestamp
,process_dt timestamp
,Status boolean
);
示例数据:选择*来自TblDet;
Col1PK | PK1
ColUDT | {'ORD001': {Ord_St_dt: '2017-06-01 05:30:07+0000', Ord_end_dt: '2017-06-10 12:00:00+0000', process_dt: '2017-06-06 00:00:01+0000',Status:FALSE}}
Python代码从Cassandra DB读取值并存储在字典中:
result=session.execute('SELECT Col1PK, ColUDT FROM TblDet')
for Col1PK, ColUDT in result:
pythondict[Col1PK]=ColUDT
程序执行时:
print pythondict['PK1']['ORD001']
输出:
typ_det(Ord_St_dt=datetime.datetime(2017, 06, 01, 5, 30), Ord_end_dt=datetime.datetime(2017, 06, 10, 12, 0), process_dt=datetime.datetime(2017, 06, 06, 0, 0), Status:FALSE)
任务是根据检索到Status:True的状态进行更新,并更新回cassandra DB。
如果我能够检索存储在cassandra DB中的值,我可以分配给字符串并替换文本,更新回DB。由于以datetime.datetime格式检索值,因此无法处理该操作。
str={Ord_St_dt: '2017-06-01 05:30:07+0000', Ord_end_dt: '2017-06-10 12:00:00+0000', process_dt: '2017-06-06 00:00:01+0000',Status:False}
str=string.replace(str,'Status:False','Status:True')
请帮助有任何pythonic方式轻松处理任务。