【问题标题】:Mongoengine Connection Failure: You have not defined a default connectionMongoengine 连接失败:您尚未定义默认连接
【发布时间】:2021-10-26 18:26:58
【问题描述】:

启动一个 python 项目,使用 fastapi 和 mongoengine。昨天运行正常,但是今天运行任何连接数据库的方法时,出现连接失败错误(mongoengine.connection.ConnectionFailure: You have not defined a default connection)。

我的连接:

from mongoengine import connect

connect(db="mydb", host='localhost', port=27017, alias='default')

我的模型:

from mongoengine.document import Document
from mongoengine.fields import StringField, BooleanField, ListField, ReferenceField
from mongoengine import PULL


class Permissao(Document):
    permissao = StringField()


class Grupo(Document):
    grupo = StringField()
    
    permissoes = ListField(ReferenceField('Permissao', reverse_delete_rule=PULL))


class Usuario(Document):
    nome_usuario = StringField()
    ativo = BooleanField()
    senha = StringField()
    
    grupos = ListField(ReferenceField('Grupo', reverse_delete_rule=PULL))
    permissoes = ListField(ReferenceField('Permissao', reverse_delete_rule=PULL))

【问题讨论】:

    标签: python fastapi mongoengine


    【解决方案1】:

    成功了,我切换到模型的连接并放置了一个元字段,在下面检查:

    from mongoengine.document import Document
    from mongoengine.fields import StringField, BooleanField, ListField, ReferenceField
    from mongoengine import PULL
    from mongoengine import connect
    
    connect(db="mydb", host="localhost", port=27017, alias="mydb-alias")
    
    class Permissao(Document):
        permissao = StringField()
    
        meta = {"db_alias" : "mydb-alias" , "collection" : "permissao"}
    
    
    class Grupo(Document):
        grupo = StringField()
        
        permissoes = ListField(ReferenceField('Permissao', reverse_delete_rule=PULL))
        
        meta = {"db_alias" : "mydb-alias" , "collection" : "grupo"}
    
    
    class Usuario(Document):
        nome_usuario = StringField()
        ativo = BooleanField()
        senha = StringField()
        
        grupos = ListField(ReferenceField('Grupo', reverse_delete_rule=PULL))
        permissoes = ListField(ReferenceField('Permissao', reverse_delete_rule=PULL))
    
        meta = {"db_alias" : "mydb-alias" , "collection" : "usuario"}
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-03-16
      • 2015-12-07
      • 2018-11-06
      • 1970-01-01
      • 1970-01-01
      • 2021-10-13
      • 2018-01-16
      • 1970-01-01
      相关资源
      最近更新 更多