这个问题在这里已经有答案:
Why do these list operations (methods: clear / extend / reverse / append / sort / remove) return None, rather than the resulting list?(4个答案)
四年前就关门了。
我尝试从数据库的json列表返回城市,但在执行代码并打开/City端点后,浏览器返回“NULL”,而不是[“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.append(list(data)))
你知道我哪里出了错,怎么改正吗?当我将其返回到render模板和一个for
循环时,一切都正常了。
不幸的是
return(data)
浏览器返回
builtins.TypeError
TypeError: <sqlite3.Row object at 0x7ff31dfb32b0> is not JSON serializable
1条答案
按热度按时间jdg4fx2g1#
.append()
始终返回NONE,因为它会就地修改。但我根本不明白为什么要调用append;这里没有要追加的内容。只需返回jsonalized数据即可:
(事实上,您甚至可能不需要这个列表--只需要
jsonify(data)
就可以了。)