我在 Django 应用程序中使用 cqlengine,其中 Cassandra 是辅助数据库。
在某些情况下,我需要手动加入 SQL 和 NoSQL 数据库请求的结果。
对于我正在使用的 SQL:
model_name.objects.all().values()
返回字典,而不是模型实例对象。
但我在cqlengine
.
作为 python 的初学者,我不知道如何最好地在cqlengine
库中实现此功能。
也许你有一些程序代码的例子,提供这个?
我在 Django 应用程序中使用 cqlengine,其中 Cassandra 是辅助数据库。
在某些情况下,我需要手动加入 SQL 和 NoSQL 数据库请求的结果。
对于我正在使用的 SQL:
model_name.objects.all().values()
返回字典,而不是模型实例对象。
但我在cqlengine
.
作为 python 的初学者,我不知道如何最好地在cqlengine
库中实现此功能。
也许你有一些程序代码的例子,提供这个?
从 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)
您现在可以将返回的对象作为字典访问,就像上面引用的那样。
我喜欢使用像这样的循环生成器:
[dict(foo) for foo in Bar.objects.all()]
这将返回所有对象的字典,并根据您的代码库允许您进行自定义序列化和反序列化。