【发布时间】:2013-07-09 16:37:28
【问题描述】:
简介 我正在使用 python cql library 库来访问 Cassandra 1.2 数据库 (CQL 3.0)。我的表包含一个布尔列,如下所示:
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 CF,所以 pycassa 不是一个选项)
提前致谢!
【问题讨论】:
-
您的 ID 类型应该是整数而不是字符串。另外,您使用的是您链接到的 CQL 驱动程序版本 1.0.4,还是最新的 (1.4.0)?
-
嗨,理查德,我使用的是最新的 (1.4.0)。你能详细说明一下不使用字符串作为键吗?
-
id 是表定义中的 int,但您将其设置为字符串 'someid'。
-
非常感谢理查德,我编辑了问题以解决它!