2014-05-12 75 views
2

与CQL 1.4.0查询空字符串试图查询卡珊德拉1.2表与空字符串的列,我得到一个错误:在Python 2.7

cql.apivalues.ProgrammingError: Bad Request: Key may not be empty 


语境:

正在发送的CQL语句使用游标,并且旨在获取first_name列具有空字符串的所有行。发送到光标cql_query文字是:

SELECT obj_key 
    FROM person_first_name_last_name 
    WHERE first_name = :first_name_0 AND last_name = :last_name_1 
    LIMIT 50 

使用参数:

{'first_name_0': '', 'last_name_1': 'd'} 


据我了解,这应该是可能的。但是,此错误似乎表明空字符串不是有效的搜索值。我能做些什么来解决这个问题?

非常感谢!

回答

1

据我所知,如果该列是键或它是组合键的一部分(至少不在CQL中),则不能有空列值。

解决方法是将列设置为数据中不存在的值,在您的示例中,使用'zx123'应该足够了,因为没有人将zx123作为名或姓。当然,使用一个简单的空白(空格)也应该工作。

+0

有趣。所以''''算作一个列的空值? –

+1

它被视为一个空值,这是Cassandra的问题,它需要匹配完整的密钥以确保快速搜索数据(或复合关键字的左侧子组,如此处所述:http://stackoverflow.com /问题/ 16575572 /卡桑德拉搜索逐主键-使用-AN-任意子集的最主键-C/16575885#16575885) –