使cassandra对象json可序列化

时间:2019-04-08 08:10:38

标签: python json object cassandra

我有一种方法可以从cassandra数据库中获取所有数据。我面临的问题是,当我想要json时,它返回了一个cassandra对象。我尝试了多种解决方案,但似乎都没有用。我已经尝试过json.dumps()loads,但收到一条错误消息,提示object is not JSON serializable

有什么建议吗?

我的代码:

@api.route('/getAllApps')
class getAllApps(Resource):
    @api.marshal_list_with(model)
    def get(self):
        return ar.getAllApplications(), 200
        #if ar.getAllApplications is None:
            #return 204



def getAllApplications(*args):
        for data in AddApplication.objects():
             print(data, data.address, data.gocd, data.jenkins, data.nodes, data.serverDependencies)
             return data

1 个答案:

答案 0 :(得分:1)

按照默认设置,cassandra以元组格式返回查询数据。您需要做的是更改cassandra配置,使其以dict格式接收它。

import json
from cassandra.query import ordered_dict_factory

cluster = Cluster(['127.0.0.1'],auth_provider=auth_provider)
session = cluster.connect("keyspace")
session.row_factory = ordered_dict_factory

#query result
rows = self.session.execute_async("SELECT * FROM " + table)
rows = self.return_result(rows, 'data')
data = rows.result()

# dump in json
json.dumps(data)

这是另一种方法,请检查此select-json支持:

 SELECT JSON a, ttl(b) FROM ...