【问题标题】:Fastapi showing empty list when fetching data from mongodb database从 mongodb 数据库中获取数据时,Fastapi 显示空列表
【发布时间】:2021-09-23 09:50:47
【问题描述】:

我正在尝试使用 fastapi 获取数据。

我的 database.py 将数据输入到 EventDetails 集合中

import pymongo
import scrap4
from backend.model import EventDetails

client = pymongo.MongoClient('mongodb://127.0.0.1:27017/')

mydb = client['Events']  #database
events = mydb.EventDetails #collection EventDetails

events.insert_many(scrap4.events_list) #data insert

模型.py

from mongoengine import Document,StringField,DateTimeField,URLField

class EventDetails(Document):
    url   = URLField()
    title = StringField()
    date  = DateTimeField()
    link  = URLField()

get_api.py

from fastapi import FastAPI
from backend.model import EventDetails
from mongoengine import connect

app = FastAPI()
connect(db="Events",host = "127.0.0.1",port = 27017)

@app.get("/get_all_events")
def get_all_events():
    details = EventDetails.objects().to_json()
    return {"Event_Details" : details}

在输出中有一个空列表,尽管 EventDetails 数据库有条目。

{"Event_Details":"[]"}

【问题讨论】:

    标签: python mongodb pymongo mongoengine fastapi


    【解决方案1】:

    Mongo 集合区分大小写,默认情况下,MongoEngine 会将您的 Document 类名称蛇形大小写(请参阅doc

    默认情况下,集合的名称是转换为 snake_case 的类的名称(例如,如果您的 Document 类名为 CompanyUser,则相应的集合将是 company_user)。我

    在您的情况下,您使用 pymongo 在名为“EventDetails”的集合中插入,但您的 MongoEngine 模型映射到名为“event_details”的集合。所以你基本上不是从同一个集合中插入和读取。

    见下文:

    from mongoengine import *
    connect(db="Events",host = "127.0.0.1",port = 27017)
    
    class EventDetails(Document):
        url   = URLField()
        title = StringField()
        date  = DateTimeField()
        link  = URLField()
    
    coll = EventDetails._get_collection()
    print(coll.name)    # prints "event_details"
    

    你有两个选择:

    • 修复您的 pymongo 插入,使其指向集合“event_details”
    • 强制使用 MongoEngine 文档集合的名称(通过 meta = {'collection': 'EventDetails'})

    【讨论】:

      猜你喜欢
      • 2020-10-03
      • 2021-09-28
      • 1970-01-01
      • 2015-07-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-25
      • 1970-01-01
      相关资源
      最近更新 更多