基本上,我只想对sql查询的结果进行json编码。
x = db.session.query(User).filter_by(username = request.form['username'], password = request.form['password']).first()
print vars(x)
return jsonify(x)
raise TypeError(repr(o) + " is not JSON serializable")
TypeError: < User WashingtonGeorge> is not JSON serializable
这是打印变量的结果(x)
{'_updated': None, 'username': u'WashingtonGeorge', 'password': u'Washington', '_sa_instance_state': <sqlalchemy.orm.state.InstanceState object at 0x7fd12a50c8d0>, 'firstname': u'George', 'lastname': u'Washington', '_created': None, 'fullname': u'George Washington', '_id': 1, 'email': u'WashingtonGeorge@yahoo.com'}
我假设
class User
中的变量'_updated'
&;'_created'
属于DateTime类型。日期时间在jsonify中不可序列化。您只需将datetime变量转换为str,即str(datetimeformat中的某些日期)就可以工作。而且,
'_sa_instance_state'
类型为sqlalchemy.orm.state.InstanceState的应该是可序列化的。更新:
jsonify无法序列化您的对象。最好的解决方案是在类中定义一个serialize()函数,并使用它使数据可序列化。所以你的班级变成了
然后在您想对数据进行jsonify的地方,只需调用。
你可以用马歇尔洛。这是一个例子。定义一个
serializer.py
,并将其放在main.py
文件旁边,然后:在
serializer.py
中在你的
main.py
通过JSON序列化,您可以做到这一点。
看这个:http://prschmid.blogspot.com/2012/12/json-serializing-sqlalchemy-objects.html
对我有用
相关问题 更多 >
编程相关推荐