1

我正在开发一个 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/ 但仍然卡住了。

4

1 回答 1

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 不会在这里工作,因为您无法在列表中调用它。抬起头来。

于 2016-09-12T20:25:27.630 回答