Сделать объект cassandra json сериализуемым

У меня есть метод извлечения всех моих данных из базы данных cassandra. Проблема, с которой я столкнулся, заключается в том, что он возвращает объект cassandra, а я хочу json. Я пробовал несколько решений, но ни одно из них не работает. Я пробовал 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

Вам нужно пройти object_hook в json.loads.

gmds 08.04.2019 10:12

пожалуйста, не пытайтесь получить все данные от Кассандры! Вы убьете свой кластер, если у вас там относительно большие данные

Alex Ott 08.04.2019 13:43
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
2
1 630
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 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)

Вот еще один способ, проверьте поддержку выберите-json:

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

Спасибо! Работал отлично.

Swesson 08.04.2019 13:02

Другие вопросы по теме