我正在建立一个网站使用姜戈和MongoDB。有两个流行的应用程序接口框架可以用来连接Django和MongoDB,一个是mongoengine,另一个是django-mongodb-engine。
因为最新的mongoengine不再支持Django Document,而django-mongodb-engine需要另一个django-nonrel包,这使得开发环境有点复杂。
我想知道,我是否可以使用Pymongo直接连接Django和MongoDB。
有没有人有相同的经验可以分享?以及如何在Django的setting.py中设置db以使db成为公共的?
发布于 2016-12-15 02:36:36
你可以像下面的代码一样使用pyMongo
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]我们根据需要创建一个连接。
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})现在你只需要像下面这样调用。
my_col_obj = MyCollection()
obj = Mymodel.objects.first()
my_col_obj.update_and_save(obj)
my_col_obj.remove(obj)发布于 2015-07-22 18:32:05
我目前正在解决一个非常类似的问题。
你说得对,mongoengine不支持Django,但据我所知,pymongo也不支持它。至少mongoengine有计划有朝一日支持它。如果你熟悉Django,它有类似模型的东西-文档。它们很容易使用--这实际上是一个完整的ORM。如果你要构建一个大型的、可重用的应用程序,你最终将不得不自己编写pymongo或编写意大利面条代码。这就是我使用mongoengine的原因。
在您的settings.py中,您应该包含以下代码:
from mongoengine import connect
connect('your_database')如果您出于某种原因仍然希望使用pymongo,您的代码应该如下所示:
from pymongo import MongoClient
client = MongoClient()https://stackoverflow.com/questions/31552914
复制相似问题