我正在开发一个API,它将从数据库返回条目。我正在使用Flask-SQLAlchemy,Flask-Marshmallow,Flask-Admin和Docker来打包它。
在一个文件Packages.py中,我有关于数据库的以下代码。 PckagesSchema课程是我尝试让Flash-Marshmallow正常工作时添加的课程。
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)
此刻返回:
{
"email": "Packages.email",
"localid": "Packages.localid",
"trackingnumber": "Packages.trackingnumber"
}
但是,当Flask-Admin应用程序显示它时,数据库中肯定存在某些内容。
这是我与Flask-Marshmallow合作的第一天,所以我根本没有经验,并感谢任何帮助。我读过了 https://flask-marshmallow.readthedocs.io/en/latest/ 但仍然卡住了。
答案 0 :(得分:0)
我刚刚在棉花糖上刷了一点:
@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会在这里工作,因为你无法在列表中调用它。抬起头来。