1

データベースからエントリを返す API を開発しています。Flask-SQLAlchemy、Flask-Marshmallow、Flask-Admin、および Docker を使用してすべてをパッケージ化しています。

1 つのファイル 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 に答える