【问题标题】:How to return json from sqlite in flask [builtins.TypeError] [duplicate]如何从烧瓶中的sqlite返回json [builtins.TypeError] [重复]
【发布时间】:2018-09-10 05:12:39
【问题描述】:

我尝试从数据库中的 json 列表返回城市,但在执行代码并打开 /city 端点后,浏览器返回 builtins.TypeError 而不是 ["city1", "city2", "city3", ...]

from flask import (
    Flask,
    g,
    redirect,
    render_template,
    request,
    url_for,
    jsonify,
)
import sqlite3

app = Flask(__name__)


DATABASE = 'database.db'


def get_db():
    db = getattr(g, '_database', None)
    if db is None:
        db = g._database = sqlite3.connect(DATABASE)
        db.row_factory = sqlite3.Row
    return db


@app.teardown_appcontext
def close_connection(exception):
    db = getattr(g, '_database', None)
    if db is not None:
        db.close()     

@app.route('/city')
def city_list():
    db = get_db()
    data = db.execute('SELECT city FROM city').fetchall()

    return jsonify(data)

您知道我在哪里犯了错误以及如何解决吗?当我将此返回给 render_template 和 for 循环时,一切正常。

【问题讨论】:

  • list.append 返回None

标签: python json python-3.x sqlite flask


【解决方案1】:

.append() 总是返回 None,因为它在原地修改。

但我完全不明白你为什么要调用 append;这里没有什么可附加的。只需返回 jsonified 数据:

return jsonify(list(data))

(事实上,您甚至可能不需要该列表 - 只需 jsonify(data) 就可以了。)

【讨论】:

  • 我更新问题是因为我尝试只返回 jsonify(list(data)) / jsonify(data) 之前但浏览器返回 builtins.TypeError
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-24
  • 1970-01-01
  • 2021-12-22
  • 2018-03-26
  • 2016-12-12
  • 1970-01-01
相关资源
最近更新 更多