2013-05-16 52 views
3

介紹 我正在使用python cql library庫來訪問Cassandra 1.2數據庫(CQL 3.0)。我的表包含一個布爾值列如下:Python cql庫無法使用查詢替換更新布爾列

CREATE TABLE test (
    id   text, 
    value  boolean, 
    PRIMARY KEY (id) 
); 

問題 當我嘗試執行這樣一個使用CQL庫查詢:

UPDATE test set value=True where id = 'someid' 

並使用此代碼:

import cql 
... 
cql_statement = "UPDATE test set value=:value where id = :id" 
rename_dict = {'id':'someid', 
       'value': True} 
cursor.execute(cql_statement, rename_dict) 

我得到這個錯誤:

Bad Request: Invalid STRING constant (True) for value of type boolean 

好像CQL庫正試圖執行此:取而代之的是

UPDATE test set value='True' where id = 'someid' 

UPDATE test set value=True where id = 'someid' 

問題

是否有此或更好的辦法的任何解決辦法/庫使用? (我使用Cassandra 1.2與CQL 3.0 CFs,所以pycassa不是一個選項)

在此先感謝!

+0

你的ID類型應該是一個整數而不是一個字符串。另外,您是否使用鏈接到的CQL驅動程序版本1.0.4或最新版本(1.4.0)? – Richard

+0

嗨理查德,我正在使用最新的(1.4.0)。你能詳細說明不使用字符串作爲關鍵嗎? –

+1

id是表定義中的一個int,但是您將它設置爲字符串'someid'。 – Richard

回答