django结合mongoengine实现对mongodb的操作

1. 引言

  以前一直是使用django+关系型数据库mysql进行开发,现在需要使用django+非关系型数据库mongodb,在django中可以直接运用ORM架构实现对mysql的操作,但是django不支持mongodb,这样我们就需要使用mongoengine这个模块来实现django model的封装

2. 前期准备

  • 安装必要的模块mongoengine和pymongo(因为mongoengine依赖pymongo,所有先安装mongoengine,就会自动安装pymongo)

# 因为使用直接使用pip安装速度很慢,推荐使用豆瓣镜像

pip install mongoengine -i https://pypi.douban.com/simple

3. 基本连接操作

from mongoengine import *

# 数据库名、ip地址、端口、账号、密码、账号配置数据库、验证方式

connect(‘project‘, host=‘localhost‘, port=27017, username=‘root‘, password=‘123456‘, authentication_source=‘admin‘, authentication_mechanism=‘SCRAM-SHA-1‘)

# 如果mongodb在本地,且不需要身份验证,只填数据库名就可以了

connect(‘project‘)

class Post(Document):

title = StringField(max_length=120, required=True)

# 类似外键

author = ReferenceField(User, reverse_delete_rule=CASCADE)

tags = ListField(StringField(max_length=30))

# 继承设置

meta = {‘allow_inheritance‘: True}

# 继承

class TextPost(Post):
    content = StringField()

class ImagePost(Post):
    image_path = StringField()

class LinkPost(Post):
    link_url = StringField()

# 添加数据
ross = User(email=‘[email protected]‘, first_name=‘Ross‘, last_name=‘Lawley‘).save()

# 还可以这样添加

ross = User(email=‘[email protected]‘)

ross.first_name = ‘Ross‘

ross.last_name = ‘Lawley‘

ross.save()

# 获取数据
for post in Post.objects:
    print(post.title)

# 获取特定的数据内容

for post in Post.objects(tags=‘mongodb‘):

print(post.title)

# 获取特定的数据内容的数量

num_posts = Post.objects(tags=‘mongodb‘).count()

print(‘Found {} posts with tag "mongodb"‘.format(num_posts))

4. 支持的字段类型

- BinaryField

- BooleanField

- ComplexDateTimeField

- DateTimeField

- DecimalField

- DictField

- DynamicField

- EmailField

- EmbeddedDocumentField

- EmbeddedDocumentListField

- FileField

- FloatField

- GenericEmbeddedDocumentField

- GenericReferenceField

- GeoPointField

- ImageField

- IntField

- ListField

- MapField

- ObjectIdField

- ReferenceField

- SequenceField

- SortedListField

- StringField

- URLField

- UUIDField

- PointField

- LineStringField

- PolygonField

- MultiPointField

- MultiLineStringField

- MultiPolygonField

  

时间: 2024-08-22 22:06:18

django结合mongoengine实现对mongodb的操作的相关文章

django结合mongoengine实现对mongodb的操作(二)

1. 获取数据 for post in Post.objects: print(post.title) for post in Post.objects:    print(post.title)    print('=' * len(post.title))     if isinstance(post, TextPost):        print(post.content)     if isinstance(post, LinkPost):        print('Link: {}

Java实现对MongoDB的AND、OR和IN操作 ,大于、小于等判断

本文转自http://blog.csdn.net/mydeman/article/details/6652387 在MongoDB的官方文档中关于Java操作的介绍,只给出了很简单的几个例子.这些例子虽然可以满足一定的需求,但是还并不是太完全.下面是我根据网页中的提示写的几个例子. 1.背景.用JUnit4.8.2实现的单元测试的形式.测试数据: [plain] view plaincopyprint? {uid:10,username:"Jim",age:23,agender:&qu

【MongoDB】-Java实现对mongodb的And、Or、In操作

1)And(同时满足多个条件时用And) public void testAnd(){ DBObject queryCondition = new BasicDBObject(); //agender='female' AND age > 27 queryCondition.put("agender", "female"); queryCondition.put("age", new BasicDBObject("$gt"

windows下搭建LDAP并利用Java实现对LDAP的操作

什么是LDAP,百度百科一堆专业术语的描述. 我总结为一句话:轻量级目录访问协议,有数据库的数据存储功能,以树状层次型存储方式,就好像你的电话薄那样. 在一次项目中,由于该项目是教育性管理项目,客户要求项目必须部署在内网.那么在内网的话,就代表用户需要去拨VPN才能进行内网的访问. 其实当时我想到的是,单独开个注册映射到外网,让用户自己注册,管理员进行审核,然后用VPN去读数据库中的账号和密码就行了.这样,我们的系统和vpn就 相当于统一账号.但是当我确认需求的时候,那个老师告诉我们,他不会读什

C#实现对mongoDB的简单增删查改

首先添加所需要驱动包(可通过nuget获得) using MongoDB.Bson;using MongoDB.Driver;using MongoDB.Driver.Builders; 一.设置配置信息 //连接信息 static string conn = "mongodb://localhost"; static string database = "test"; static string collection = "person"; s

Java实现对MongoDB的增删改查

一.连接数据库 连接数据库,你需要指定数据库名称,如果指定的数据库不存在,mongo会自动创建数据库. 连接数据库的Java代码如下(无需密码的连接): public class MongTest { public static void main(String[] args) { try { MongoClient mongoClient = new MongoClient("localhost",27017);//连接到 mongodb 服务 MongoDatabase mongo

在Asp.Net MVC中使用NPOI插件实现对Excel的操作(导入,导出,合并单元格,设置样式,输入公式)

前言 NPOI 是 POI 项目的.NET版本,它不使用 Office COM 组件,不需要安装 Microsoft Office,目前支持 Office 2003 和 2007 版本. 1.整个Excel表格叫做工作表:WorkBook(工作薄),包含的叫页(工作表):Sheet:行:Row:单元格Cell. 2.NPOI是POI的C#版本,NPOI的行和列的index都是从0开始 3.POI读取Excel有两种格式一个是HSSF,另一个是XSSF. HSSF和XSSF的区别如下: HSSF

python实现对excel表的读写操作(一)

Part 1. 模块介绍: 使用python实现对excel表的读写操作有两个模块,分别为: 1. 对excel表读取模块 xlrd 0.9.3  :下载地址: https://pypi.python.org/pypi/xlrd 英文释意:The package is for reading data and formatting information from Excel files. 2. 对excel表写入模块 xlwt 0.7.5 : 下载地址:https://pypi.python.

基于DevExpress实现对PDF、Word、Excel文档的预览及操作处理

原文:基于DevExpress实现对PDF.Word.Excel文档的预览及操作处理 在一般的管理系统模块里面,越来越多的设计到一些常用文档的上传保存操作,其中如PDF.Word.Excel等文档,有时候是通过分布式的WCF技术实现数据的显示和处理,因此希望直接预览而不需要下载文件,这样能够给我们提供很多的方便.在DevExpress里面,提供了相应的控件来显示和处理这些文档,本文主要介绍如何利用DevExpress的控件实现对PDF.Word.Excel文档的预览和操作处理. 1.PDF的预览