我有一种方法可以从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
答案 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 ...