Ich entwickle eine API, die Einträge von einer Datenbank zurückgibt. Ich benutze Flask-SQLAlchemy, Flask-Marshmallow, Flask-Admin und Docker, um alles zu verpacken.Problem mit Flask-Marshmallow, das DB-Inhalt über API freigibt
In einer Datei Packages.py habe ich den folgenden Code in Bezug auf die Datenbank. Die Klasse PckagesSchema ist die Klasse, die ich hinzugefügt habe, als ich versucht habe, Flash-Marshmallow zum Laufen zu bringen.
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
Der in der Hauptdatei habe ich folgenden Code-Schnipsel
from app.models import Packages, PackagesSchema
packages_schema = PackagesSchema()
db.create_all()
und dann weiter unten in den Teilen, die mit API GET-Anforderungen befassen.
@app.route('/packages', methods=['GET'])
def get_packages():
result = packages_schema.dump(Packages).data
return jsonify(result)
im Moment diese zurück:
{
"email": "Packages.email",
"localid": "Packages.localid",
"trackingnumber": "Packages.trackingnumber"
}
Allerdings gibt auf jeden Fall etwas in der Datenbank als die Flask-Admin App seine zeigt.
Dies ist mein erster Tag mit Flask-Marshmallow arbeiten, so bin ich überhaupt nicht so erfahren und würde jede Hilfe zu schätzen wissen. Ich habe gelesen https://flask-marshmallow.readthedocs.io/en/latest/ aber immer noch fest.
Ich denke, dieser Teil: result = 'packages_schema.dump (Packages) .data' muss eine Abfrage in der Klammer sein. Also vielleicht so etwas wie 'packages_schema.dump (Packages.query.all()). Data'. – GMarsh
BTW. Konvention ist für Tabellennamen Singular. Sie könnten also den Klassennamen in Ihrem Modell von "Pakete" in "Paket" ändern. – GMarsh