将Cassandra UDT数据分配给python变量

时间:2017-06-06 05:46:00

标签: python string dictionary cassandra

我是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方式轻松处理任务。

0 个答案:

没有答案