【问题标题】:Dynamic data with Flask and Mongodb data带有 Flask 和 Mongodb 数据的动态数据
【发布时间】:2019-08-11 04:48:04
【问题描述】:

我是 Flask 的初学者。我想根据前端最终用户的交互(查询)进行数据库调用,而不是静态数据传递(由于大小)。 我在网上找不到任何关于如何进行的例子。我一直在考虑类似的事情:

@app.route("/")
def index():
    return render_template('index.html')


@app.before_first_request
def initialize_database():
    pass

@app.route('api/data')
def get_data_by_selecting_bounding_box():
    pass 

数据是推文,用户应该能够在地图上选择一个区域(边界框)并返回从该区域中包含的数据的 Mongodb 数据库检索到的响应。

【问题讨论】:

    标签: python mongodb flask dynamic frontend


    【解决方案1】:

    所以你有几个问题要解决:

    1. 管理数据库连接。
    2. 查询数据库
    3. 返回结果

    让我们从 mongo 连接开始:

    from pymongo import MongoClient
    client = MongoClient(URI_STRING)
    

    这里你用 pymongo 建立了 mongodb 客户端。现在您可以通过以下方式访问 mongodb 服务上的数据库:

    db = client["my-DB-name"]
    

    从这里,您可以访问集合,例如您的位置集合,我假设它称为locations。你可以像db.locations.find(...)一样访问它

    现在您需要查询数据库。您的 API 需要接受 lat1, lat2, long1, long2 来表示边界框的边界。在这里,我将假设它们是 .args,如 docs 中所述

    @app.route('api/data')
    def get_data_by_selecting_bounding_box():
        cursor = db.locations.find(
        "$and":[
        {"lat": {"$gt": requests.args.get("lat1", 0)}},
        {"lat": {"$lt": requests.args.get("lat2", 0)}},
        {"long": {"$gt": requests.args.get("long1", 0)}},
        {"long": {"$lt": requests.args.get("long2", 0)}}
        ])
    

    现在您可以return 将光标放在此路由处理程序的末尾,无论您的html 模板要求什么方式。可以这么简单:

        return [doc for docs in cursor]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-09-04
      • 2017-10-03
      • 2021-11-15
      • 1970-01-01
      • 2019-05-04
      • 1970-01-01
      • 2015-06-29
      • 2019-04-05
      相关资源
      最近更新 更多