不是 JSON 可序列化的,python-3.x,flask,flask-restful"/>

首页 > 解决方案 > Python3不是 JSON 可序列化的

问题描述

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()

标签: python-3.xflaskflask-restful

解决方案


(我还不能评论)你用光标了吗?

    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() 在数据库上执行命令


推荐阅读