我正在尝试在Flask/Python中jsonify一个SQLAlchemy结果集.
Flask邮件列表建议采用以下方法:http://librelist.com/browser//flask/2011/2/16/jsonify-sqlalchemy-pagination-collection-result/#04a0754b63387f87e59dda564bde426e:
return jsonify(json_list = qryresult)
Run Code Online (Sandbox Code Playgroud)
但是我收到以下错误:
TypeError: <flaskext.sqlalchemy.BaseQuery object at 0x102c2df90>
is not JSON serializable
Run Code Online (Sandbox Code Playgroud)
我在这里俯瞰什么?
我发现了这个问题:如何将SqlAlchemy结果序列化为JSON?这看起来非常相似但是我不知道Flask是否有一些魔力使其更容易,如邮件列表帖子所示.
编辑:为了澄清,这就是我的模型
class Rating(db.Model):
__tablename__ = 'rating'
id = db.Column(db.Integer, primary_key=True)
fullurl = db.Column(db.String())
url = db.Column(db.String())
comments = db.Column(db.Text)
overall = db.Column(db.Integer)
shipping = db.Column(db.Integer)
cost = db.Column(db.Integer)
honesty = db.Column(db.Integer)
communication = db.Column(db.Integer)
name = db.Column(db.String())
ipaddr = db.Column(db.String())
date = db.Column(db.String())
def __init__(self, fullurl, url, comments, overall, shipping, cost, honesty, communication, name, ipaddr, date): …Run Code Online (Sandbox Code Playgroud) 我正在使用 Flask、SQLAlchemy 和 javascript。我需要通过 AJAX 将我的查询结果以 json 格式传递给 javascript,但我不断收到此错误:
raise TypeError(repr(o) + " is not JSON serializable")
TypeError: <model.Cloud object at 0x7f72e40c5910> is not JSON serializable'
Run Code Online (Sandbox Code Playgroud)
我的代码如下:
@app.route('/past/<user_id>')
def get_past_clouds(user_id):
if user_id:
clouds = model_session.query(model.User).filter_by(id=user_id).first().clouds
if clouds != "":
clouds_d = {}
for idx, cloud in enumerate(clouds):
clouds_d[idx] = cloud
return jsonify(json_list=clouds_d)
return None
Run Code Online (Sandbox Code Playgroud)
忽略我之前的评论,它允许请求工作,但返回的所有对象都未定义。
最后我是这样做的:
clouds_d = dict( (cloud.name, [ photo.to_dict() for photo in cloud.photos ]) for cloud in clouds )
return jsonify(clouds_d)
Run Code Online (Sandbox Code Playgroud)