首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在django中直接使用pymongo

在django中直接使用pymongo
EN

Stack Overflow用户
提问于 2015-07-22 10:34:42
回答 2查看 10.9K关注 0票数 3

我正在建立一个网站使用姜戈和MongoDB。有两个流行的应用程序接口框架可以用来连接DjangoMongoDB,一个是mongoengine,另一个是django-mongodb-engine

因为最新的mongoengine不再支持Django Document,而django-mongodb-engine需要另一个django-nonrel包,这使得开发环境有点复杂。

我想知道,我是否可以使用Pymongo直接连接DjangoMongoDB

有没有人有相同的经验可以分享?以及如何在Django的setting.py中设置db以使db成为公共的?

EN

回答 2

Stack Overflow用户

发布于 2016-12-15 02:36:36

你可以像下面的代码一样使用pyMongo

代码语言:javascript
复制
from pymongo import MongoClient


class MongoConnection(object):

    def __init__(self):
        client = MongoClient('localhost', 27017)
        self.db = client['database_name']

    def get_collection(self, name):
        self.collection = self.db[name]

我们根据需要创建一个连接。

代码语言:javascript
复制
class MyCollection(MongoConnection):

    def __init__(self):
       super(MyCollection, self).__init__()
       self.get_collection('collection_name')

    def update_and_save(self, obj):
       if self.collection.find({'id': obj.id}).count():
           self.collection.update({ "id": obj.id},{'id':123,'name':'test'})
       else:
           self.collection.insert_one({'id':123,'name':'test'})

    def remove(self, obj):
        if self.collection.find({'id': obj.id}).count():
           self.collection.delete_one({ "id": obj.id})

现在你只需要像下面这样调用。

代码语言:javascript
复制
my_col_obj = MyCollection()
obj = Mymodel.objects.first()
my_col_obj.update_and_save(obj)
my_col_obj.remove(obj)
票数 7
EN

Stack Overflow用户

发布于 2015-07-22 18:32:05

我目前正在解决一个非常类似的问题。

你说得对,mongoengine不支持Django,但据我所知,pymongo也不支持它。至少mongoengine有计划有朝一日支持它。如果你熟悉Django,它有类似模型的东西-文档。它们很容易使用--这实际上是一个完整的ORM。如果你要构建一个大型的、可重用的应用程序,你最终将不得不自己编写pymongo或编写意大利面条代码。这就是我使用mongoengine的原因。

在您的settings.py中,您应该包含以下代码:

代码语言:javascript
复制
from mongoengine import connect
connect('your_database')

如果您出于某种原因仍然希望使用pymongo,您的代码应该如下所示:

代码语言:javascript
复制
from pymongo import MongoClient
client = MongoClient()
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31552914

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档