Flask-Marshmallow 通过 API 公开数据库内容的问题
Issue with Flask-Marshmallow exposing DB contents via API
我正在开发一个 API,它将 return 数据库中的条目。我正在使用 Flask-SQLAlchemy、Flask-Marshmallow、Flask-Admin 和 Docker 将其打包。
在一个文件中 Packages.py 我有以下关于数据库的代码。 class PckagesSchema 是我在尝试让 Flash-Marshmallow 工作时添加的 class。
class Packages(db.Model):
id = db.Column(db.Integer, primary_key=True, autoincrement=True)
trackingnumber = db.Column(db.String(15))
email = db.Column(db.String(80))
localid = db.Column(db.String(80))
class PackagesSchema(ma.ModelSchema):
class Meta:
model = Packages
在主文件中我有以下代码片段
from app.models import Packages, PackagesSchema
packages_schema = PackagesSchema()
db.create_all()
然后是处理 API GET 请求的部分。
@app.route('/packages', methods=['GET'])
def get_packages():
result = packages_schema.dump(Packages).data
return jsonify(result)
此刻 returns:
{
"email": "Packages.email",
"localid": "Packages.localid",
"trackingnumber": "Packages.trackingnumber"
}
但是,正如 Flask-Admin 应用程序显示的那样,数据库中肯定有一些东西。
这是我第一天使用 Flask-Marshmallow,所以我一点经验都没有,希望得到任何帮助。我读过了
https://flask-marshmallow.readthedocs.io/en/latest/
但仍然卡住了。
我刚刷了一点棉花糖:
@app.route('/packages', methods=['GET'])
def get_packages():
packages = Packages.query.all()
result = packages_schema.dump(packages).data
return jsonify(result)
应该给你里面的一切。如果要返回很多记录,则需要添加 packages_schema = PackagesSchema(many=True)
.
此外,不确定您使用的是哪个版本的烧瓶 运行...但是在最新版本之前,我认为 jsonify 在这里不起作用,因为您无法在列表中调用它。提醒一下。
我正在开发一个 API,它将 return 数据库中的条目。我正在使用 Flask-SQLAlchemy、Flask-Marshmallow、Flask-Admin 和 Docker 将其打包。
在一个文件中 Packages.py 我有以下关于数据库的代码。 class PckagesSchema 是我在尝试让 Flash-Marshmallow 工作时添加的 class。
class Packages(db.Model):
id = db.Column(db.Integer, primary_key=True, autoincrement=True)
trackingnumber = db.Column(db.String(15))
email = db.Column(db.String(80))
localid = db.Column(db.String(80))
class PackagesSchema(ma.ModelSchema):
class Meta:
model = Packages
在主文件中我有以下代码片段
from app.models import Packages, PackagesSchema
packages_schema = PackagesSchema()
db.create_all()
然后是处理 API GET 请求的部分。
@app.route('/packages', methods=['GET'])
def get_packages():
result = packages_schema.dump(Packages).data
return jsonify(result)
此刻 returns:
{
"email": "Packages.email",
"localid": "Packages.localid",
"trackingnumber": "Packages.trackingnumber"
}
但是,正如 Flask-Admin 应用程序显示的那样,数据库中肯定有一些东西。
这是我第一天使用 Flask-Marshmallow,所以我一点经验都没有,希望得到任何帮助。我读过了 https://flask-marshmallow.readthedocs.io/en/latest/ 但仍然卡住了。
我刚刷了一点棉花糖:
@app.route('/packages', methods=['GET'])
def get_packages():
packages = Packages.query.all()
result = packages_schema.dump(packages).data
return jsonify(result)
应该给你里面的一切。如果要返回很多记录,则需要添加 packages_schema = PackagesSchema(many=True)
.
此外,不确定您使用的是哪个版本的烧瓶 运行...但是在最新版本之前,我认为 jsonify 在这里不起作用,因为您无法在列表中调用它。提醒一下。