【问题标题】:How to get a result from a collection on MongoDB using FastAPI?如何使用 FastAPI 从 MongoDB 上的集合中获取结果?
【发布时间】:2020-08-24 16:43:11
【问题描述】:

我正在尝试使用 FastAPI 和 MongoDB 创建一个 API,它只有一个 GET 方法,但我不知道如何执行此操作。 我的应用程序已经使用转换为 csv 并包含 MONGODB 集合上的所有数据的 txt 文件为 MongoDB 填充了一个巨大的数据库,我想要做的是:在端点路由中提供一个邮政编码(例如 localhost:8000/cep/123456789 ) 并且我的应用程序将从我的 MongoDB 集合中返回所有信息,这些信息是该邮政编码的一部分,例如街道、城市。

@app.get('/cep/{cep}')
def find_ceps():
    mongo_uri = pymongo.MongoClient("mongodb://root:example@localhost:27017/")
    db_name = mongo_uri["cep4free"]
    col = db_name["cep4free"]

    for i in col.find({}):
        return i


cep = find_ceps()
return cep

我试图这样做,但它不起作用,我不知道如何使用 GET 方法返回它。 我也是 Python 和 FastAPI 的新手,我正在编写这个 API 以进行练习和学习。如果有人可以提供帮助,我会很高兴。

谢谢!

【问题讨论】:

    标签: python mongodb pymongo mongoengine fastapi


    【解决方案1】:

    您需要做的第一件事是将数据库初始化与实际路由分开。 FastAPI 显示example of how to do that,只需将 Couch 初始化行替换为 Mongo 所需的行。

    其次,您(通常)将拥有一个 database 文件夹,其中包含您将在路线中使用的代码。这是layered architecture approach 的一部分。从这里你可以定义一个模式,或者只是从你刚刚创建的数据层中定义的类中调用一个方法。

    例如(更简化的方法)我们会在路由中调用cep_db.findAll()。此方法可以存在于文件database/cep.py 中名为Cep 的类中。

    最后,请参阅此项目 https://github.com/markqiu/fastapi-mongodb-realworld-example-app 以获取工作示例。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-07-01
      • 1970-01-01
      • 2017-03-25
      • 1970-01-01
      • 2020-06-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多