2013-07-30 32 views
0

我在卡桑德拉使用CQL3以下表中創建插入和時間戳檢索到基於卡桑德拉CQL3表在Python

fmt = '%m/%d/%Y %H:%M' 
    t1 = datetime.strptime("01/01/2000 22:05", fmt) 
    prepared = session.prepare(""" 
        INSERT INTO user_log (user_id,zone_id,freq,time) VALUES (?,?,?,?) 
        """) 
    session.execute_async(prepared.bind((str(Uid),str(zone_id),int(freq),t1))) 

插入很好,但當我嘗試檢索值時,它會在檢索時間值時引發異常。檢索所有其他列正常工作。 Select *也會拋出異常。

+0

請詳細說明一下。 您是否嘗試在cqlsh中執行'select * from user_log'? 什麼是異常消息? – omnibear

+0

好吧,它的奇怪。我將檢索到的結果轉儲到json中,它會拋出異常。當我試圖打印到控制檯,它工作正常。任何可能的原因的想法。檢索到的時間戳以逗號分隔。 time = datetime.datetime(2013,2,5,7,37) –

+0

它看起來好像時間戳沒有正確轉儲到json中。否則它的工作正常。 –

回答

2

如果您有麻煩插入和檢索在卡桑德拉時間戳,你並不孤單,看到這一點: How to insert a datetime into a Cassandra 1.2 timestamp column

的解決辦法可能是從你的日期時間計算UNIX時間戳(紀元以來經過的毫秒)而是插入/檢索它。

一般來說,如果您確切地聲明瞭錯誤消息(如果有),它將有助於編寫有用的答案?另外,哪一行代碼正是導致錯誤?

+0

時間戳不是Json Serializer.Thats它爲什麼會拋出一個異常。 –

1
import json 
import uuid 

class UUIDEncoder(json.JSONEncoder): 
    def default(self, obj): 
     if isinstance(obj, uuid.UUID): 
      return obj.hex 
     return json.JSONEncoder.default(self, obj) 

j = json.dumps(invar, indent=4, separators=(',', ': '), cls=UUIDEncoder)