Python3 не JSON сериализуемый - PullRequest
0 голосов
/ 16 июня 2020

Python3 .7

У меня есть следующая конечная точка GET для возврата данных в базе данных, но продолжает получать

{
  "code": 400,
  "message": "Exception in _query: <sqlite3.Row object at 0x10fcbb4b0> is not JSON serializable"
}

Вот код. Я пробовал много разных решений, но ни одно из них не работает. Есть предположения?

Каким образом я могу распечатать данные sqlite3? Когда я сделаю

print(entries)

, я также верну

. Есть предположения? Спасибо!

# all the imports
import os
import sqlite3
from flask import Flask, request, session, g, redirect, url_for, abort, \
     render_template, flash

from .response import Response

app = Flask(__name__) # create the application instance :)
app.config.from_object(__name__) # load config from this file , flaskr.py

import json
import requests

    @app.route('/table_result', methods=['GET'])
    def table_result():

        try:

            db = get_db()

            cur = db.execute("SELECT name FROM mouse_tracking; ")

            entries = cur.fetchall()

            # return Response(200, json.dumps(entries)).payload()

            return json.dumps(entries)

        except sqlite3.Error as e:

            return Response(400, "Database error: %s" % e).payload()

        except Exception as e:

            return Response(400, "Exception in _query: %s" % e).payload()

1 Ответ

0 голосов
/ 04 июля 2020

(пока не могу комментировать) вы использовали курсор?

    def table():
    try:
        db = sqlite3.connect('db.db')
        cursor = db.cursor()
        cursor.execute("SELECT name FROM db")
        entries = cursor.fetchall()

        return jsonify(json.dumps(entries))

    except Exception as e:
        return Response(400, "Exception: %s" % e).payload()

вы должны использовать db.cursor () для выполнения команд в базе данных

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...