python笔记_django+mongodb(一)

一、背景

由于我们的框架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

    原文作者:Stansosleepy
    原文地址: https://www.jianshu.com/p/81cad740ec75
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞