我正在使用Django和MongoDB构建一个网站。我们可以使用两个流行的API框架来连接Django
和MongoDB
,其中一个是mongoengine
,另一个是django-mongodb-engine
。
因为不支持最新的mongoengine
Django Document,而django-mongodb-engine
需要另一个django-nonrel
包,这会使开发环境变得有点复杂。
我想知道,如果我可以使用Pymongo
直接连接Django
和MongoDB
。
有没有人可以分享相同的经验?以及如何在Django的setting.py
中设置数据库以使数据库公开?
答案 0 :(得分:5)
您可以使用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)
答案 1 :(得分:2)
我目前正在处理一个非常类似的问题。
你是对的,mongoengine
不支持Django,但据我所知,pymongo
也不支持Django。至少mongoengine
计划有一天支持它。如果您熟悉Django,它就有类似模型的东西 - 文档。它们易于使用 - 这实际上是一个完整的ORM。你没有得到pymongo
,如果你打算建立一个大的,可重复使用的应用程序,你最终会自己编写ORM或者有意大利面条代码。这就是我使用mongoengine
的原因。
在settings.py
中,您应该包含以下代码:
from mongoengine import connect
connect('your_database')
如果由于某种原因仍想使用pymongo
,则代码应如下所示:
from pymongo import MongoClient
client = MongoClient()