我想知道如何在cqlengine中使用集合
我可以插入值列表但只有一个值,所以我不能将一些值附加到我的列表中
我想做这个:
在CQL3中:
UPDATE users
SET top_places = [ 'the shire' ] + top_places WHERE user_id = 'frodo';
在CqlEngine中:
connection.setup(['127.0.0.1:9160'])
TestModel.create(id=1,field1 = [2])
这段代码会在我的列表中添加2,但是当我插入新值时,它会替换为list中的旧值.
Cqlengine唯一的帮助:
https://cqlengine.readthedocs.org/en/latest/topics/columns.html#collection-type-columns
我想知道我如何通过cqlengine阅读收集字段.
它是我的django项目中的字典吗?我该怎么用呢?!!
请帮忙.
谢谢
最佳答案 看看你的例子,这是一个列表.
给出一个基于Cassandra CQL文档的表:
CREATE TABLE plays (
id text PRIMARY KEY,
game text,
players int,
scores list<int>
)
你必须声明这样的模型:
class Plays(Model):
id = columns.Text(primary_key=True)
game = columns.Text()
players = columns.Integer()
scores = columns.List(columns.Integer())
您可以像这样创建一个新条目(省略代码如何连接):
Plays.create(id = '123-afde', game = 'quake', players = 3, scores = [1, 2, 3])
然后更新一个得分列表:
play = Plays.objects.filter(id = '123-afde').get()
play.scores.append(20) # <- this will add a new entry at the end of the list
play.save() # <- this will propagate the update to Cassandra - don't forget it
现在,如果您使用CQL客户端查询数据,您应该看到新值:
id | game | players | scores
----------+-------+---------+---------------
123-afde | quake | 3 | [1, 2, 3, 20]
要在python中获取值,您只需使用数组的索引:
print "Length is %(len)s and 3rd element is %(val)d" %\
{ "len" : len(play.scores), "val": play.scores[2] }