2

我正在编写一个 API,它查询基于 Cassandra 2.1.2 的数据库并以 JSON 格式返回结果。我为此使用cqlengine。

这是简化的架构 -

class Checkins(Model):
    Model.__comment__ = "Table mapping for submit datastore"
    changelist     =  columns.Integer (primary_key= True)                                 # Changelist number
    checkin_date   =  columns.DateTime()                                                  # Submit time
    stream_name    =  columns.Ascii   (primary_key= True)                                 # Stream-name
    creator        =  columns.Ascii   ()                                                  # Creator

我的查询是这个

clobj = Checkins.objects(changelist=changelist).get()

如何将结果集转换为 json 格式?

4

1 回答 1

0

您可以从cqlengine 0.12起的模型创建字典。从那里您可以使用 json 模块来获取 JSON 格式。您必须小心,因为日期时间不是 json 可序列化的。因此,您需要先将其转换为字符串(或查看此问题以了解解决日期时间序列化问题的其他方法)。

import json

clobj = Checkins.objects(changelist=changelist).get()
clobj_dict = dict(clobj_dict)
clobj_dict['checkin_date'] = str(clobj_dict['checkin_date'])
json_string = json.dumps(clobj_dict)

或者您可以将其添加为类的属性

import json

class Checkins(Model):
    # Define your model as before
    # ...

    @property
    def json(self):
        # Perform the same thing as before.
        json_dict = dict(self)
        json_dict['checkin_date'] = str(json_dict['checkin_date'])
        return json.dumps(clobj_dict)

# Just call the property.
clobj = Checkins.objects(changelist=changelist).get()
json_string = clobj.json
于 2015-03-12T20:42:07.097 回答