gpt4 book ai didi

collections - Cassandra - CqlEngine - 使用集合

转载 作者:行者123 更新时间:2023-12-04 03:37:22 24 4
gpt4 key购买 nike

我想知道如何在 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 添加到我的列表中,但是当我插入新值时,它会替换为列表中的旧值。

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] }

关于collections - Cassandra - CqlEngine - 使用集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18268201/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com