使用Flask和Mongodb数据的动态数据

时间:2019-03-20 13:17:22

标签: python mongodb flask dynamic frontend

我是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数据库中包含的区域数据中检索到的响应。

1 个答案:

答案 0 :(得分:0)

因此您需要解决一些问题:

  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来表示边界框的边界。在这里,我将假设它们是docs

中所述的.args
@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]