【发布时间】:2020-06-29 14:11:17
【问题描述】:
我在 cassandra 中有数据,我正在尝试从日期时间范围内的数据库中获取数据。
下面是代码。
fromdate = datetime.combine(dt, datetime.min.time())
todate = datetime.combine(datetime.now().date(), time(23, 59, 59))
print(fromdate)
print(todate)
batch = BatchStatement()
batch.add(SimpleStatement("SELECT * FROM datadump WHERE 'pickup_time' >= '%s' AND 'pickup_time' <= '%s' ALLOW FILTERING;"),
(fromdate, todate,))
data = session.execute(batch)
当我尝试在日期时间范围内获取数据时,上面的代码不起作用,但如果我尝试获取所有数据,例如“SELECT * from datadump”,它就可以工作。
有人可以告诉我上述方法有什么问题吗?
提前致谢!
【问题讨论】:
-
好吧,我看到
ALLOW FILTERING这通常是“错误的”。pickup_time是集群键吗?如果是这样,请尝试指定它前面定义的所有键,尤其是分区键。 -
@Aaron,感谢您的回复。 Pickup_time 是数据库中的列名。
-
所以根本就不是钥匙?这绝对是个问题。此外,亚历克斯在他的回答中提出了一个很好的观点。在 Cassandra 中使用带有
SELECT的批处理没有任何意义。 -
好的,我直接在 RazorSQL 中执行了这个查询并得到了输出。 SELECT * FROM datadump WHERE 'pickup_time' >= '2020-03-18 00:00:00' AND 'pickup_time' = '%s' AND 'pickup_time'