Python 如何为cassandra创建只读模型
我有卡桑德拉模型Python 如何为cassandra创建只读模型,python,model,cassandra,readonly,Python,Model,Cassandra,Readonly,我有卡桑德拉模型 from cassandra.cqlengine import columns from cassandra.cqlengine.models import Model class StudentModules(Model): """Model for Student get.""" __table_name__ = 'students' student_id = columns.UUID(primary_key=True, default=uuid
from cassandra.cqlengine import columns
from cassandra.cqlengine.models import Model
class StudentModules(Model):
"""Model for Student get."""
__table_name__ = 'students'
student_id = columns.UUID(primary_key=True, default=uuid4)
student_name = columns.Text(index=True)
在我的例子中,表students
已经存在,我总是想使用这个模块进行select
查询
我尝试了
\uuuu abstract\uuuuu
属性,但在这种情况下,我无法调用过滤器
或获取
模型调用。没有内置的方法来执行此操作。通过定义一个中间类并重写变异方法*,可以获得类似的行为:
class ROModel(Model):
__abstract__=True
@classmethod
def create(cls, **_):
raise NotImplementedError()
def save(self):
raise NotImplementedError()
def update(self, **_):
raise NotImplementedError()
def delete(self):
raise NotImplementedError()
class Test(ROModel):
__keyspace__='test'
k = columns.Integer(primary_key=True)
a = columns.Integer()
b = columns.Integer()
print Test.objects.first()
Test(k=1, b=4).update() # NotImplementedError
Test.create(k=1, a=2, b=3) # NotImplementedError
Test(k=1).delete() # NotImplementedError
Test(k=1, a=3).save() # NotImplementedError
*请注意,这只是部分解决方案——您还需要使用类似专用的query.ModelQuerySet
更新ROModel.\uuuuuuqueryset\uuuuuuuuuu
然而,我很难理解这给你带来了什么。如果您调用一个变异方法,任何使其只读的解决方案都会导致运行时错误
在任何情况下,您最好使用auth和仅具有选择权限的用户/角色。
你知道怎么做了吗?@RohanMonga还没有:(@RohanMonga)你有什么办法吗?