2

我在 Django 应用程序中使用 cqlengine,其中 Cassandra 是辅助数据库。

在某些情况下,我需要手动加入 SQL 和 NoSQL 数据库请求的结果。

对于我正在使用的 SQL:

model_name.objects.all().values() 

返回字典,而不是模型实例对象。

但我在cqlengine.

作为 python 的初学者,我不知道如何最好地在cqlengine库中实现此功能。

也许你有一些程序代码的例子,提供这个?

4

2 回答 2

2

从 cqlengine 0.12 开始有内置功能。这是根据: CQLEngine 模型文档

从 cqlengine 0.12 开始,我们添加了对像字典一样处理模型实例的支持。请参阅下面的示例。

class Person(Model):
first_name  = columns.Text()
last_name = columns.Text()

kevin = Person.create(first_name="Kevin", last_name="Deldycke")
dict(kevin)  # returns {'first_name': 'Kevin', 'last_name': 'Deldycke'}
kevin['first_name']  # returns 'Kevin'
kevin.keys()  # returns ['first_name', 'last_name']
kevin.values()  # returns ['Kevin', 'Deldycke']
kevin.items()  # returns [('first_name', 'Kevin'), ('last_name', 'Deldycke')]

kevin['first_name'] = 'KEVIN5000'  # changes the models first name

所以,要回答你的问题......你只需要做一个基本的查询,获取你的对象,然后将其转换为字典:

dict(your_returned_model_object)

您现在可以将返回的对象作为字典访问,就像上面引用的那样。

于 2015-03-03T01:26:09.390 回答
1

我喜欢使用像这样的循环生成器:

[dict(foo) for foo in Bar.objects.all()]

这将返回所有对象的字典,并根据您的代码库允许您进行自定义序列化和反序列化。

于 2015-03-03T18:26:26.950 回答