一、背景
由于我们的框架Autotest不能适用于复杂的需求:
- 测试用例管理
- 性能测试结果管理
因此需要在Autotest框架中扩展一个mongodb非关系型数据库。
在django框架中放弃原生支持的数据库,启用mongodb是2016年给自己挖的第一个坑。
二、setting.py
我的django是1.5的旧版本,更换mongodb之后,setting.py应该这样改:
#默认database改成dummy(傀儡)
DATABASES = {
'default': {
'ENGINE':'django.db.backends.dummy',
}
}
#setting中需要连接mongodb
from mongoengine import connect
connect('test')
#如果需要mongodb handler session tracking(不明觉厉),注释掉原来的
SESSION_ENGINE = 'mongoengine.django.sessions'
SESSION_SERIALIZER = 'mongoengine.django.sessions.BSONSerializer'
#SESSION_SERIALIZER = 'django.contrib.sessions.serializers.JSONSerializer'
#添加这个
AUTHENTICATION_BACKENDS = ('mongoengine.django.auth.MongoEngineBackend',)
#还有一个和user相关的东西,我貌似不需要
三、准备mongodb
最简单的方式:
yum install mongodb, 也可以按照mongodb官网上的方法配置源
然后安装mongoengine,遇到一个天坑
pip install mongoengine
随便写了一点django的东西,在保存数据的时候遇到一个错误:
mongoengine连接错误:“False is not a read preference”
原来我用的系统是centos7.0,在安装mongodbengine的时候安装的1.0,同时安装了mongoengine的依赖3.2,这两个东西冲突了!!!正确的安装姿势是:
=> pip install mongoengine==0.9 # 安装mongoengine
=> pip uninstall pymongo # 卸载pymongo-3.0.2
=> pip install pymongo==2.8 # 安装pymongo-2.8
好坑啊,幸好找到这这篇文章,解决了。
http://www.cnblogs.com/shenweiyan/p/4574349.html