提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
提示:这里可以添加本文要记录的大概内容:
flask_sqlalchemy中的SQLAlchemy用于处理数据库返回数据,分页返回前端时,若使用普通查询函数
user_res = User.query.filter_by().all()
返回是list列表,不转json无法通过jsonify返回前端
return jsonify({
'msg':'注册成功',
'code':200,
'data':user_res
})
以下步骤测试将查询结果转化json并分页传给前端
一、定义ORM模型
示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。
class User(db.Model):
__tablename__ = "user"
id = db.Column(db.Integer,primary_key=True,autoincrement=True)
username = db.Column(db.String(200),nullable=False)
age = db.Column(db.Integer,nullable=True)
# 以下函数复制即可,在orm的class下写
def to_json(self):
dict = self.__dict__
if "_sa_instance_state" in dict:
del dict["_sa_instance_state"]
return dict
二、分页返回JSON
代码如下(示例):
@app.route('/user_list',methods= ['POST','GET'])
def user_list():
try:
# page_number 每页多少条数据(int)
# page_index 页码 (int)
# total 总数据量
test_json = request.get_json()
page_number = test_json.get('page_number')
page_index = test_json.get('page_index')
total = len(User.query.filter_by().all())
print(total)
user_res= User.query.paginate(page_index,page_number,False)
de = []
for i in project.items:
de.append(i.to_json())
return jsonify({
'msg':'成功',
'code':200,
'data': {
'list':de,
'total':total
}
})
except Exception as e:
print(e)
return jsonify({'msg':'出错','code':500,})
总结
- 在定义ORM模型时候加入上述函数;
- 查询时使用:
query.paginate(page_index,page_number,False)
,若加入查询条件可以query.filter_by(id=2).paginate(page_index,page_number,False)
,即加入filter_by(查询条件)
或者filter(查询条件)
,filter和filter_by有区别。