Python django cassandra未使用datetime范围的where子句执行select查询
我在cassandra中有数据,我试图在datetime范围内从DB中获取数据 下面是代码Python django cassandra未使用datetime范围的where子句执行select查询,python,django,cassandra,Python,Django,Cassandra,我在cassandra中有数据,我试图在datetime范围内从DB中获取数据 下面是代码 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("S
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)
fromdate=datetime.combine(dt,datetime.min.time())
todate=datetime.combine(datetime.now().date(),time(23,59,59))
打印(起始日期)
打印(todate)
batch=BatchStatement()
batch.add(SimpleStatement(“从数据转储中选择*,其中“拾取时间”>='%s'和“拾取时间”您不能在batch语句中使用SELECT
)-它仅用于INSERT
/UPDATE
/DELETE
另外,请注意,CQL中的批处理与SQL中的批处理不同,您需要知道何时使用,何时不使用-请参阅。您不能在批处理语句中使用选择-它仅用于插入/更新/删除
另外,请注意,CQL中的批处理与SQL中的批处理不同,您需要知道何时使用,何时不使用-请参阅。好吧,我看到允许筛选,这通常是“错误的”。picku\u time
是群集键吗?如果是,请尝试指定它前面定义的所有键,尤其是分区键@Aaron,谢谢你的回复。Pick_time是数据库中的列名。所以它根本不是键?这肯定是个问题。Alex在他的回答中提出了一个好的观点。在Cassandra中使用带有SELECT
的批处理没有任何意义。好的,我直接在RazorSQL中执行了这个查询,并获得了输出。从数据转储中选择*如果'picku_time'>='2020-03-18 00:00:00'和'picku_time',我看到允许过滤,这通常是“错误的”。picku_time
是群集键吗?如果是,请尝试指定它前面定义的所有键,尤其是分区键@Aaron,谢谢你的回复。Pick_time是数据库中的列名。所以它根本不是键?这肯定是个问题。Alex在他的回答中提出了一个好的观点。在Cassandra中使用带有SELECT
的批处理没有任何意义。好的,我直接在RazorSQL中执行了这个查询,并获得了输出。从数据转储中选择*其中'picku_time'>='2020-03-18 00:00:00'和'picku_time'感谢您的回复。因此我必须准备语句,然后执行它。类似这样的事情?语句=会话。准备(“从数据转储中选择*,其中'picku_time'>='%s'和'picku_time',如果只是一次执行,那么带有prepare的版本将很慢,因为需要将查询发送到服务器进行分析。但是如果您经常这样做,那么您需要准备查询-这将更有效,但实际上,您需要花一些时间学习Cassandra w,以及如何建立有效的数据模型。例如,您只能在群集列上使用范围查询,并且只能在指定分区键的情况下使用范围查询。我建议您在OK上观看DS201和DS220课程,然后我将开始:)非常感谢Alex。谢谢你的回复。所以我必须准备语句,然后执行它。像这样的事情?语句=会话。准备("从数据转储中选择*,其中'picku_time'>='%s'和'picku_time',如果只是一次执行,那么带有prepare的版本将很慢,因为需要将查询发送到服务器进行分析。但是如果您经常这样做,那么您需要准备查询-这将更有效,但实际上,您需要花一些时间学习Cassandra w,以及如何建立有效的数据模型。例如,您只能在群集列上使用范围查询,并且只能在指定分区键的情况下使用范围查询。我建议您在OK上观看DS201和DS220课程,然后我将开始:)非常感谢Alex。