WAŻNE Jeśli masz do czynienia z tym problemem dzisiaj korzystać z nowej Cassandra-sterownik z datastax (tj Cassandra import), ponieważ rozwiązuje większość tych wspólnych problemów i Don nie używa już starego sterownika cql, jest przestarzały! To pytanie jest stare, zanim nowy sterownik był jeszcze w fazie rozwoju i musieliśmy użyć niekompletnej starej biblioteki o nazwie cql (import cql < - nie korzystaj już z tego, przenieś się do nowego sterownika).Jak wkładać datetime do Cassandry 1,2 timestamp kolumna
Intro Używam biblioteki cql python, aby uzyskać dostęp do bazy danych Cassandra 1.2. W bazie danych mam tabelę z kolumną znacznika czasu iw moim kodzie Pythona mam datetime do wstawienia w kolumnie. Przykład następująco:
Tabela
CREATE TABLE test (
id text PRIMARY KEY,
last_sent timestamp
);
Kod
import cql
import datetime
...
cql_statement = "update test set last_sent = :last_sent where id =:id"
rename_dict = {}
rename_dict['id'] = 'someid'
rename_dict['last_sent'] = datetime.datetime.now()
cursor.execute (cql_statement, rename_dict)
Problem
Kiedy wykonać kod rzeczywisty oświadczenie CQI wykonywany jest tak :
update test set last_sent =2013-05-13 15:12:51 where id = 'someid'
Wtedy nie powiedzie się z powodu błędu
Bad Request: line 1:XX missing EOF at '-05'
Problem wydaje się, że biblioteka CQI nie ucieka („”) lub konwersji datetime przed uruchomieniem kwerendy.
Pytanie Co to jest poprawny sposób to zrobić bez konieczności ręcznego ucieczce datę i być w stanie przechowywać pełną znacznik czasu z większą precyzją do kolumny Cassandra datownika?
Z góry dziękuję!
Dzięki Abhi, właśnie o to proszę. Będę zamieszczać pełną odpowiedź w kilku. –