如何使用FastAPI从MongoDB上的集合中获取结果?

2024-04-29 08:59:39 发布

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

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

@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是为了练习和学习。如果有人能帮忙,我会很高兴的

谢谢


Tags: 方法api信息应用程序localhostdbgetmongo
1条回答
网友
1楼 · 发布于 2024-04-29 08:59:39

您需要做的第一件事是将db初始化与实际路由分开。FastAPI显示了一个example of how to do that,只需将coach初始化行替换为Mongo所需的初始化行即可

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

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

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

相关问题 更多 >