在Django项目中使用MongoDB作为后端数据库,且不改变Django的ORM框架。实现Django用户管理程序对MongoDB数据库中文件的增加和修改。

用法

1.pip install djongo

2.在Django项目下的setting.py中增加如下代码:

DATABASES ={

    'default':{
'ENGINE:'djongo',
'NAME':'your-db-name',
}
}

3.运行 manage.py makemigrations,之后运行 manage.py migrate(仅在MongoDB中第一次建立数据表的时候需要)

4.完成。

  在这里还是要推荐下我自己建的Python开发学习群:725479218,群里都是学Python开发的,如果你正在学习Python ,小编欢迎你加入,大家都是软件开发党,不定期分享干货(只有Python软件开发相关的),包括我自己整理的一份2018最新的Python进阶资料和高级开发教程,欢迎进阶中和进想深入Python的小伙伴

要求:

1.Python3.6及以上版本

2.MongoDB 3.4及以上版本

3.如果项目数据库中使用嵌套查询或者子查询,比如:

inner_qs =Blog.objects.filter(name__contains='Ch').values('name')
entries =Entry.objects.filter(blog__name__in=inner_qs)

需要MongoDB3.6及以上版本。

如何工作?

Djongo对Django ORM框架的改变非常小,这就意味着不会发生一些不必要的错误。它将SQL字符串查询转变为MongoDB的文件查询。至此,所有和Django相关的功能、数据库等都这样运作。

Django的服务模块:

'django.contrib.admin',
'django.contrib.auth',
'django.contrib.sessions',

其它的也全都支持。

Django中用法

用于MongoDB的Djongo连接器确保你可以: --重新使用Django数据库/ORM框架 --同原始Django变量一起发挥作用 --事先验证你的代码 --微小的SQL JOIN操作

参考集成Django和MongoDB获取更详细的介绍。如果你的项目使用了复杂的数据库,也可以向专家获取支持。

使用Django用户管理模块添加数据文件

比如你想利用Django创建一个以MongoDB为后端数据库的博客平台。在你博客项目app/models.py文件下定义Blog数据表:

完成设置,然后访问localhost:80000/admin/你将会看到以下结果。

查询嵌入的数据字段

在上面的例子中,我们要查询所有以Beatles开头的名字,可以使用下面的查询方法:

参考在Django中使用MongoDB数据字段获取更多的介绍。

Djongo管理器

Djongo管理器扩展了Django管理器的功能。它能够让你使用所有pymongo的API命令。可以在模型中定义类似Djongo管理器一样的自定义管理器。

管理器的使用和Djongo管理器一样: post = Entry.objects.get(pk=pkey) 将会获得一个带有主键pkey的对象。

对Pymongo直接操作

MongoDB有非常强大的查询命令,DjongoManager能够让你完全使用它。

你可以直接使用任何pymongo命令通过在命令名字前面加上mongo的前缀。例如,对Blogpage(Blogpage在SQL中保存为一个数据表,在MongoDB中保存为一个集合)使用aggregate,函数名变为mongoaggregate。在模型中直接插入一个文件(不是使用.save()),使用mongoinsertone() 。

djongo:Django和MongoDB连接器的更多相关文章

  1. Django+Nginx+MongoDB+Mysql+uWsgi的搭建

    搭建目标如下: 图:系统架构图 这个系统可以提供web服务及其它查询应用服务,我用其做一个二手房信息搜集.处理及分发的系统,可以通过浏览器访问,也可以通过定制的客户端进行访问. 一.安装篇 1.下载安 ...

  2. django使用mongodb建表

    1.安装mongodb的py模块包 pip install mongoengine 同时安装了mongoengine.pymongo 2.在项目配置文件settings.py中配置 from mong ...

  3. django连接mongodb mongoengine

    优点 MongoEngine (http://mongoengine.org)1. 提供了和 Django 原生 ORM 几乎一样的一切,功能已经相当强大;2. 用起来比 Django 原生 ORM ...

  4. Django与mongodb数据库的连接

    1.最开始需要下载一个第三方模块:mongoengine 2.下载完成之后,需要在settings中完成配置(在DATABASES后面,别问我为什么,问了我也不告诉你...) connect中传入的是 ...

  5. Django优雅集成MongoDB

    Django优雅集成MongoDB   将Django与MongoDB集成 在不更改Django ORM的情况下,将MongoDB用作Django项目的后端数据库.使用Django Admin在Mon ...

  6. (动态模型类,我的独创)Django的原生ORM框架如何支持MongoDB,同时应对客户使用时随时变动字段

    1.背景知识 需要开发一个系统,处理大量EXCEL表格信息,各种类别.表格标题多变,因此使用不需要预先设计数据表结构的MongoDB,即NoSQL.一是字段不固定,二是同名字段可以存储不同的字段类型. ...

  7. django 技巧锦集

    1. 如何将model对象转化成一个dict,这在restful api的设计上会有用. 答案:使用django.forms.models的model_to_dict方法,demo如下: from d ...

  8. spark连接mongodb

    1.添加依赖 hadoop和mongodb的连接器 <dependency> <groupId>org.mongodb.mongo-hadoop</groupId> ...

  9. 推荐:MongoDB学习资料

    http://www.mongodb.org/display/DOCS/Production+Deployments Official MongoDBProject Website Getting S ...

随机推荐

  1. (后端)swagger

    Swagger 文档提供了一个方法,使我们可以用指定的 JSON 或者 YAML 摘要来描述你的 API,包括了比如 names.order 等 API 信息. 你可以通过一个文本编辑器来编辑 Swa ...

  2. Spring MVC 全注解配置 (十一)

    完整的项目案例: springmvc.zip 目录 实例 项目结构: 父级的pom配置: <?xml version="1.0" encoding="UTF-8&q ...

  3. js 实现动态时间

    <span id="timebox"></span>                   //承载时间的span $(function () { var o ...

  4. PostgreSQL 多级分区

    CREATE TABLE range_list (a int,b timestamp) PARTITION BY RANGE (b); CREATE TABLE range_pa1 PARTITION ...

  5. 谁记录了mysql error log中的超长信息

    [问题] 最近查看MySQL的error log文件时,发现有很多服务器的文件中有大量的如下日志,内容很长(大小在200K左右),从记录的内容看,并没有明显的异常信息. 有一台测试服务器也有类似的问题 ...

  6. Windows Server 2016-增强IPAM

    Windows Server 2016网络功能可能没有像Docker容器或Nano Server那样得到关注,但是管理员应该了解新的域名系统服务器和IP地址管理功能如何帮助他们获得对网络环境的更多控制 ...

  7. Linux 中数组的使用

    Linux中数组本人可能用的相对较少,但是会经常遇见,也容易忘记,就顺便记录下来吧 数值类型的数组:一对括号表示数组,数组中元素之间使用“空格”来隔开 arr=(1 2 3 4 5) 字符串类型数组: ...

  8. SQL server 数据库的索引和视图、存储过程和触发器

    1.索引:数据排序的方法,快速查询数据 分类: 唯一索引:不允许有相同值 主键索引:自动创建的主键对应的索引,命令方式不可删 聚集索引:物理顺序与索引顺序一致,只能创建一个 非聚集索引:物理顺序与索引 ...

  9. IOC的底层实现

  10. Java 7 for Absolute Beginners/Java 7基础教程--代码纠错

    中文版书中的问题代码记录: 只记录了P213后面的错误代码,如果后面发现P213页前面的错误代码,会继续补齐.但我提供的代码都是可以正常运行的,如果有使用者发现中文版书中其他的错误代码请告诉我,方便我 ...