Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/360.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python django cassandra未使用datetime范围的where子句执行select查询_Python_Django_Cassandra - Fatal编程技术网

Python django cassandra未使用datetime范围的where子句执行select查询

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

我在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("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。