flask API查询项,JSON

2024-04-27 15:00:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用一个flaskapi作为我的角度应用程序的休息点。目前我正在测试API。我测试了我的/users点,以确保我得到了所有的用户。你知道吗

//importing db, app, models, schema etc.
from flask import jsonify, request

@app.route('/users')
def get_users():
    # fetching from database
    users_objects = User.query.all()

    # transforming into JSON-serializable objects
    users_schema = UserSchema(many=True)
    result = users_schema.dump(users_objects)

    # serializing as JSON
    return jsonify(result.data)

成功了。但是,现在我正在尝试获取其他数据(有9000多个对象。。它不起作用(当我尝试查询所有的时候)。我刚拿了第一件东西

@app.route('/aggregated-measurements')
def get_aggregated_measurements():
    aggregated_measurements_objects = AggregatedMeasurement.query.first()

    # transforming into JSON-serializable objects
    aggregated_measurement_schema = AggregatedMeasurementSchema()
    result = aggregated_measurement_schema.dump(aggregated_measurements_objects)

    return jsonify(result.data)

这给我看了第一次综合测量。但是当我尝试查询所有这些aggregated_measurements_objects = AggregatedMeasurement.query.all()时,什么都不显示。我在我的jupyter笔记本上做了同样的事情,然后显示了它们。然后我认为这可能是太多的信息,所以我试着像这样限制查询aggregated_measurements_objects = AggregatedMeasurement.query.all()[:5]。它在jupyter笔记本上工作,但在我到达路线时什么也不显示。你知道吗

我不明白为什么当我到达/users点时,我可以看到所有这些,但是当我尝试对aggregated-measurements做同样的操作时,我什么也得不到(即使我限制了查询)。我正在用sqlite数据库使用flask\u sqlalchemy。你知道吗

**使用模型和架构更新**

from datetime import datetime

# ... import db
import pandas as pd
from marshmallow import Schema, fields

class AggregatedMeasurement(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    created = db.Column(db.DateTime, nullable=False, default=datetime.utcnow)

    time = db.Column(db.DateTime, nullable=False)
    speed = db.Column(db.Float, nullable=False) 
    direction = db.Column(db.Float, nullable=False)  

    # related fields
    point_id = db.Column(db.Integer, db.ForeignKey('point.id'), nullable=False)

    point = db.relationship('Point',backref=db.backref('aggregated_measurements', lazy=True))                                        

class AggregatedMeasurementSchema(Schema):
    id = fields.Int(dump_only=True)

    time = fields.DateTime()
    speed = fields.Number()
    direction = fields.Number()
    point_id = fields.Number()

第二次更新发现错误。 在验证了它确实命中了db(thankyou@gbozee)之后,我注意到在/aggregated-measurements路由上,当我创建模式时,我只为一个对象执行了这个操作。我忘了像在users\u模式中那样包含many=True。因此,这就是为什么只有一点出现,当我尝试更多,它没有。我使用的是marshmallow(一个对象序列化包)。你知道吗


Tags: fromimportidfalsetruefieldsdbobjects