【发布时间】:2021-11-22 14:22:44
【问题描述】:
from cassandra.cqlengine import columns
from django_cassandra_engine.models import DjangoCassandraModel
from django.db import connections
def get_tag(car_name, car_type):
class Tag(DjangoCassandraModel):
__table_name__ = car_name + "_" + car_type
time = columns.Integer(primary_key=True, required=True) # unix time in seconds # noqa
value = columns.Float(required=True)
with connections['cassandra'].cursor() as cursor:
cursor.execute("CREATE TABLE IF NOT EXISTS mydatabase." + __table_name__ + " (time INT PRIMARY KEY, value FLOAT);") # noqa
def last():
with connections['cassandra'].cursor() as cursor:
elem = cursor.execute("SELECT * FROM " + Tag.__table_name__ + " ORDER BY time DESC LIMIT 1;") # noqa
return elem
def __str__(self) -> str:
return str(self.time) + "," + str(self.value)
return Tag
代码中的用法:
tag = get_tag(car_name, car_type)
last_elem = tag.last()
调用tag.last()时产生错误:
cassandra.InvalidRequest:来自服务器的错误:code=2200 [无效查询] message="ORDER BY 仅在分区键为 受 EQ 或 IN 限制。”
你好。我在 Cassandra 中有一个动态 Django 模型创建。 (时间,价值)测量。如何根据时间(主键)获取表中的最后一个元素?我的实现有错误。
【问题讨论】: