【问题标题】:Python3 <sqlite3.Row object at 0x10fcbb4b0> is not JSON serializablePython3 <sqlite3.Row object at 0x10fcbb4b0> 不是 JSON 可序列化的
【发布时间】:2020-06-16 06:18:30
【问题描述】:

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.x flask flask-restful


    【解决方案1】:

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

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

    【讨论】:

    • “Row”类型的对象不是 json 可序列化的
    猜你喜欢
    • 2015-09-19
    • 2014-07-14
    • 2016-06-19
    • 2019-09-01
    • 2016-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-13
    相关资源
    最近更新 更多