Как получить результат из коллекции на MongoDB с помощью FastAPI? - PullRequest
0 голосов
/ 09 мая 2020

Я пытаюсь создать API, используя FastAPI и MongoDB, который имеет только метод GET, и я понятия не имею, как это сделать. Мое приложение уже заполнило MongoDB огромной базой данных с использованием txt-файла, который преобразован в csv и включает все данные из коллекций 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 для практики и обучения. Буду рад, если кто-нибудь поможет.

Спасибо!

1 Ответ

0 голосов
/ 23 мая 2020

Первое, что вам нужно сделать, это отделить инициализацию базы данных от фактического маршрута. FastAPI показывает пример того, как это сделать , просто замените строки инициализации Couch теми, которые вам нужны для Mon go.

Во-вторых, у вас (обычно) будет папка database с кодом, который вы будете использовать в своем маршруте. Это часть подхода к многоуровневой архитектуре . Отсюда вы либо определяете схему, либо просто вызываете метод из определенного класса на только что созданном уровне данных.

Например (при более упрощенном подходе) мы могли бы вызвать cep_db.findAll() в маршруте. Этот метод может находиться в классе с именем Cep в файле database/cep.py.

Наконец, см. Рабочий пример в этом проекте https://github.com/markqiu/fastapi-mongodb-realworld-example-app.

...