【发布时间】:2015-04-25 12:41:51
【问题描述】:
我正在为 python 使用 datastax cassandra 驱动程序。
有问题的代码部分是:
cql = "SELECT * FROM iptools.geo2ip WHERE geo_key = ? AND (( geohash >= ? AND geohash < ? ) OR ( geohash >= ? AND geohash < ? ));"
print cql
prepared = self.session.prepare(cql)
结果是:
SELECT * FROM iptools.geo2ip WHERE geo_key = ? AND (( geohash >= ? AND geohash < ? ) OR ( geohash >= ? AND geohash < ? ));
cassandra.protocol.SyntaxException: <ErrorMessage code=2000 [Syntax error in CQL query] message="line 1:82 missing EOF at ')' (...? AND geohash < ? [)];)">
我不确定括号周围的括号是从哪里来的,只要我删除括号,prepare 语句就会起作用。
想法?
【问题讨论】:
-
我很确定这是因为 CQL 不包含
OR关键字的定义。 -
那个和括号在 CQL 中的工作方式与在 SQL 中的工作方式不同。我会一起摆脱它们。
-
您能发表您的
CREATE TABLE geo2ip声明吗?这将有助于弄清楚如何获得您正在寻找的东西。 -
@BryceAtNetwork23 - 如果您想将“或”语句作为答案,我会接受。这就是问题所在。我只会做多个查询。现在我要解决我认为是布隆表导致的内存问题 - 我在进行范围查询时堆空间不足 - 涉及大约 20 亿行。