python - 从 Flask Sqlalchemy 查询返回 JSON 列表
问题描述
我正在尝试制作一个 API,我可以向(从前端应用程序)发送请求并显示该信息。
我已经建立了一个 Postgres 数据库,并且正在使用 Flask 和 Sqlalchemy。
我的第一个函数,它返回数据库中的单个条目确实有效:
@app.route("/get/<id_a>/<id_b>")
def get_by_id(id_a,id_b):
try:
ref=PlanApp.query.filter_by(plan_ref=f"{id_a}/{id_b}").first()
return jsonify(ref.serialize())
except Exception as e:
return(str(e))
其中 PlanApp 是一个模型类。
但是,我没有成功返回行列表。例如,我想获取某个列(日期)在给定日期之后的所有行。
@app.route("/get/<date>")
def get_since_date(date):
try:
result=PlanApp.query.filter(PlanApp.app_date>date).all()
return jsonify(result.serialize())
except Exception as e:
return(str(e))
这将返回:
“列表”对象没有“序列化”属性
所以我删除了序列化功能。然后我遇到了:
PlanApp 类型的对象不是 JSON 可序列化的
我在这里错过了什么吗?提前谢谢了。我将在下面包含完整的代码。
from flask import Flask, abort, jsonify, make_response, request
from flask_sqlalchemy import SQLAlchemy
from flask_migrate import Migrate
from flask_cors import CORS, cross_origin
from models import db, PlanApp
import os
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = os.environ['DATABASE_URL']
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
app.config['SQLALCHEMY_ECHO'] = True
db.init_app(app)
migrate = Migrate(app, db)
# @app.route('/')
# def show_all():
# return render_template('show_all.html', PlanApp = PlanApp.query.all() )
# Get a planning application by its reference number
# Two arguments because the format of a ref is 'xxxx/xx'
@app.route("/get/<id_a>/<id_b>")
def get_by_id(id_a,id_b):
try:
print(f"{id_a}/{id_b}")
ref=PlanApp.query.filter_by(plan_ref=f"{id_a}/{id_b}").first()
print(ref)
return jsonify(ref.serialize())
except Exception as e:
return(str(e))
@app.route("/get/<date>")
def get_since_date(date):
try:
print(date)
result=PlanApp.query.filter(PlanApp.app_date>date).all()
print(result)
# result = [r for r, in result]
# for r in result:
# print(type(r))
# result = PlanApp.query.filter_by(app_date>date)
return jsonify(result.serialize())
except Exception as e:
return(str(e))
if __name__ == '__main__':
app.run(debug=True)
解决方案
推荐阅读
- php - 如何更新 laravel 请求验证的唯一字段
- git - 将复杂的 svn 迁移到 git 中(保留历史,主干和分支不在正确的位置)
- react-native - 在平面列表中选择反应原生 onpress 上的多个元素
- google-bigquery - 使用“Not In”子句时,BigQuery 查询无效地返回“No Results”
- python - 使用散景python将鼠标悬停在一个点上时获取其他列的列表作为注释
- angular - 如何将多个 API 调用从一组值组合成一个 Observable 数组?
- winforms - 如何在 Winforms 中合并 DataGridView 列
- python - Djnago 中的 SwingTime
- corda - 在 Intellij 上运行 Corda-Sample 时发生“NotSerializableException”
- python - 从python中的df列中删除特殊字符和字符串