2013-08-15 10 views
2

복합 행 키 (UTF8Type, DateType)와 Pycassa를 사용 카산드라 열 가족에 삽입 할 수 없습니다는 다음 스키마와 나는 (Pycassa를 사용하여 만든)는 카산드라 열 가족이있어

self.tracker_batcher.insert(tracker_key, dictionary_to_insert) 

tracker_key은 다음과 같습니다 :

('cd7449e8-8f0d-4730-9ee4-ef60edfdd409', datetime.datetime(2013, 8, 14, 16, 47, 55, 856000))

다음 행으로 삽입하려고

나는이 작업을 기대하고있다 - 나는 행 키로 다른 테이블의 데이터 형식을 사용하고 그들은 치료를 작동합니다. 또한 - Pycassa 사이트 (http://pycassa.github.io/pycassa/assorted/composite_types.html)의 자습서를 따르고있는 것처럼 보입니다. 자세한 내용은

나는 Pycassa 버전 1.9.0 및 카산드라를 사용하고 1.2.8

감사합니다,

매트

편집 : 이벤트의 기괴한 트위스트에서

수신 한 첫 번째 오류 메시지 :

TypeError: A str or unicode value was expected, but datetime was received instead (2013-08-14 16:45:15.376000)

내가 같은 쿼리를 수정 시도 :

tracker_key = (str(dictionary_to_insert['session_id']), datetime.datetime.strftime(dictionary_to_insert['datestamp'], "%Y-%m-%d %H:%M:%S"))

문자열

에 날짜를 변경하고 다음과 같은 오류 메시지가 있어요 :

raise TypeError('DateType arguments must be a datetime or timestamp') 
TypeError: DateType arguments must be a datetime or timestamp 

이해할 수 있습니다.

답변

1

문제는 행 열과 실제로는 같지 않지만 값이 삽입 된 것처럼 보입니다.

필자는 UTF8Type을 값으로 사용하려고했지만 키의 일부로 사용 된 것과 동일한 날짜 시간을 열 패밀리의 값으로 삽입하려고했습니다.

트래커 키를 만든 다음 dictionary_to_insert 값을 문자열로 변환하면 수정됩니다.