应用mongodb引擎提高性能
djmongoengine的Python项目详细描述
Django MongoEngine公司
与Django-MongoEngine或{a2}不同,此包的目标不是更改Django中的SQL角色。为NoSQL数据库编写后端并非易事。这里使用MongoDB作为helper数据库,以提高性能。在
安装
要通过pip
安装包,请运行以下命令
# From Github
$ pip install git+https://github.com/giorgi94/djmongoengine.git
使用
要开始使用该包,请将djmongoengine
添加到INSTALLED_APPS
并定义{
包为文档架构和连接器提供mixin
# models.pyclassDocumentMixin:@classmethoddefUpdateOne(cls,instance):# updates document in MongoDB, which corresponeds to django instance@classmethoddeffrom_instance(cls,instance):# create mongoengine document based on django instance
我们假设djangoinstance.id
存储在ID
中,因为id
从mongodb返回{example
中,我们提供了基于django模型定义mongoengine模式的基本示例
# myapp/models.pyclassCategory(models.Model):title=models.CharField(max_length=50,unique=True)alias=models.CharField(max_length=50)# myapp/mongo.pyclassCategory(EmbeddedDocument):ID=fields.IntField()title=fields.StringField()alias=fields.StringField()@classmethoddeffrom_instance(cls,instance):returncls(ID=instance.id,title=instance.title,alias=instance.alias)
在signals.py
和receivers.py
中定义了函数和信号,用于将django中的更改同步到mongodb。在
图形ql
GraphQL与包没有直接连接,但是graphene
的文档对初学者不友好。有graphene-django和{a4},但它不允许充分挖掘graphql
和{
# myapp/query.pyclassQuery(graphene.ObjectType):articles=graphene.List(ArticleQuery,find=FindInput())defresolve_articles(self,info,**kwargs):find=kwargs.get("find")normilize_find(find)iffindisnotNone:returnArticle.objects(**find)returnArticle.objects()schema=graphene.Schema(query=Query)# myapp/views.pyfrom.queryimportschemadefgraphql_view(request):...result=schema.execute(query)ifresult.errors:returnJsonResponse({"errors":str(result.errors)})returnJsonResponse({"query":result.data})
- 项目
标签: