Django连接Mongodb详细教程(利用mongoengine)

一、了解MongoDB数据库?

  1. 简介:MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统,面向文档存储的数据库,类JSON的数据格式,自由灵活。
  2. 优点:可扩展分片集群,海量数据存储,针对大量数据查询速度更快。

二、 MongoEngine是什么?

  1. 简介:MongoEngine是一个对象文档映射器,用Python编写,可用于MongoDB,简单理解就是讲文档(json)对应成我们的对象model的一个映射器
  2. 安装:pip install mongoengine
  3. 使用及定义:字段的定义我不用多说,大家都可看懂,无非就是时间类型、字符串类型、整数型,但是我要说的就是如何定设置嵌套的model对象,使用到的关键字就是EmbeddedDocument,针对普通文档的定义就是继承Document即可。下面的代码就是文章Article对象的review字段嵌套Review所有字段,在review使用ListField(EmbeddedDocumentField(Review)),代码如下:(提示:别忘了在mongdodb中创建好对应的数据库以及结合) 
from mongoengine import *
import datetime
connect('studataplat')# 默认连接本地的数据库
#connect('dbname', username='用户名', password='密码', authentication_source='admin',  host='远程服务器IP地址', post=开放的端口号) 连接服务器Mongodb数据库

class Review(EmbeddedDocument):
	name = StringField(max_length=255, required=True)
	image = StringField(max_length=255, required=True)
	time = DateTimeField( default=datetime.datetime.now,required=True)
	content = StringField(max_length=255, required=True)
	good = IntField(default=0, required=True)
	replay = StringField(max_length=255, required=True)
	other = StringField(max_length=255, required=True)

class Article(Document):
	title = StringField(max_length=255, required=True)
	text = StringField(max_length=255, required=True)
	url = StringField(max_length=255, required=True)
	time = DateTimeField(default=datetime.datetime.now,required=True)
	image = StringField(max_length=255, required=True)
	type = StringField(max_length=255, required=True)
	publisher = IntField(default=0, required=True)
	review = ListField(EmbeddedDocumentField(Review))
if __name__ == '__main__':
	print(Article.objects().count())

对应成json数据类型如下图:

Django连接Mongodb详细教程(利用mongoengine)_第1张图片

三、Django使用 MongoEngine连接Mongodb

  1.  settings.py配置
DATABASES = {
    'default': {
            'ENGINE': 'django.db.backends.mysql',
            #'NAME': os.path.join(BASE_DIR, 'test'),#database name
            'NAME': 'studataplat',
            'USER':'root',
            'PASSWORD':'root',
            #'HOST': '148.70.95.42',
            'HOST': 'localhost',
            'PORT': '3306',
        },
    # 连接MongDB数据库
    'mongodb': {
        'ENGINE': None,
    }
}
import mongoengine
# 连接mongodb中数据库名称为mongotest5的数据库
conn = mongoengine.connect("mongotest")

 其他的就像上面创建对应的对象就可以使用了。

下一节:如何使用ORM代替mongo对嵌套集合进行插入数据

 

你可能感兴趣的:(Django)