使用Djongo模块在Django中使用MongoDB数据库


Posted in Python onJune 20, 2021
目录
  • 一、安装与配置
  • 二、定义模型
  • 三、生成模型
  • 四、访问Django Admin
  • 五、操作数据
  • 六、最后

 

一、安装与配置

Djongo的项目官方地址为:https://nesdis.github.io/djongo/,我们可以通过pip命令直接安装djongo:

pip install djongo

在安装完成之后,我们就可以直接在Django中配置MongoDB数据库的信息了。

在正常情况下,我们的Django项目中数据库在settings.py文件中进行配置,其一般配置如下所示:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
}

而我们使用Djongo的话,变化也不大,如下所示:

DATABASES = {
    'default': {
        'ENGINE': 'djongo',
        'NAME': 'MongoDB数据库的名称',
    }
}

可以发现,这与Django原始的数据库配置方法是一模一样的,所不同的是,数据库的引擎使用了djongo而非Django官方提供的数据库封装引擎。

我们用一个新的Django项目来演示一下djongo的使用。

首先创建Django项目和应用:

使用Djongo模块在Django中使用MongoDB数据库

然后修改项目的settings.py文件,填写MongoDB数据库的配置信息,Djongo提供了如下参数供我们设置数据库的信息:

DATABASES = {
   'default': {
      'ENGINE': 'djongo',
      'ENFORCE_SCHEMA': True,
      'NAME': 'your-db-name',
      'HOST': 'host-name or ip address',
      'PORT': port_number,
      'USER': 'db-username',
      'PASSWORD': 'password',
      'AUTH_SOURCE': 'db-name',
      'AUTH_MECHANISM': 'SCRAM-SHA-1',
      'REPLICASET': 'replicaset',
      'SSL': 'ssl',
      'SSL_CERTFILE': 'ssl_certfile',
      'SSL_CA_CERTS': 'ssl_ca_certs',
      'READ_PREFERENCE': 'read_preference'
   }
}

我们的数据库是本地的数据库,所以只需要设置一部分信息即可,其如下所示:

DATABASES = {
   'default': {
      'ENGINE': 'djongo',
      'ENFORCE_SCHEMA': True,
      'NAME': 'djongo_example',
      'HOST': '127.0.0.1',
      'PORT': 27017,
   }
}

这样,MongoDB在Django中的 配置就完成了,我们下面可以定义一些模型。

 

二、定义模型

Djongo的一大特点是可以无缝地衔接Django的ORM语法,包括模型定义的语法和模型操作的语法。现在,我们就为Django项目定义一些模型。

在默认情况下,Django应用的模型在其目录下的models.py文件中定义。models.py文件初始化状态下只有如下一行代码:

from django.db import models

这是Django数据库封装的模型类,我们需要将其修改为Djongo提供的模型类,如下所示:

from djongo import models

然后,就可以按照Django的方式来定义模型了。在这里,我们定义了一个News()模型,用于存储新闻:

class News(models.Model):
    title = models.CharField(verbose_name="标题",max_length=50)
    author = models.CharField(verbose_name="作者",max_length=10)
    desc = models.CharField(verbose_name="简介",max_length=100)
    content = models.TextField(verbose_name="正文")
    create_time = models.DateTimeField(auto_now_add=True)
    update_time = models.DateTimeField(auto_now=True,auto_now_add=True)

    def __str__(self):
        return self.title

    class Meta:
        verbose_name = '新闻'
        verbose_name_plural = verbose_name

 

三、生成模型

定义好模型之后,继续按照Django模型的使用方式,生成数据库迁移,并执行迁移:

python manage.py makemigrations app&
python manage.py migrate

命令的执行信息如下所示:

使用Djongo模块在Django中使用MongoDB数据库

和使用SQL数据库一样,Django为新项目创建了我们定义的模型还有一些认证管理相关的表,这是否是真的呢,我们去MongoDB数据库里面查看一下:

使用Djongo模块在Django中使用MongoDB数据库

MongoDB数据库里面果然生成了一系列的数据表。

 

四、访问Django Admin

经过上面的演示,我们可以发现借助于Djongo模块,我们可以无痛地以Django ORM的方式来使用MongoDB数据库。那么作为Django重量级的admin后台功能,是否能够支持呢?我们继续下面的演示。

首先,继续在命令行中创建一个超级用户:

python manage.py createsuperuser

其过程与使用其他SQL数据库无异:

使用Djongo模块在Django中使用MongoDB数据库

接着,我们将刚刚创建的News()模型添加到admin中,在admin.py中进行设置:

from app.models import News
admin.site.register(News)

随后,运行测试服务器:

使用Djongo模块在Django中使用MongoDB数据库

 

五、操作数据

除此之外,我们最关心的还是对数据操纵是否方便。我们先在后台界面尝试一下新增数据:

使用Djongo模块在Django中使用MongoDB数据库

显示新增成功了,我们去MongoDB里面看看是否存在:

使用Djongo模块在Django中使用MongoDB数据库

 

六、最后

经过上面初步的演示在Django中借助djongo模块来使用MongoDB,可以发现其还是很方便的,优点在于其改动微乎其微,兼容性特别强。推荐大家在测试环境下充分地进行测试使用,如果没有问题,那么可以谨慎在生产环境中进行部署。更多的使用方法和问题,大家可以访问djongo项目官网:https://nesdis.github.io/djongo/ 和它的GitHub项目地址:https://github.com/nesdis/djongo/

以上就是使用Djongo模块在Django中使用MongoDB数据库的详细内容,更多关于在Django中使用MongoDB数据库的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
分享Python字符串关键点
Dec 13 Python
Python Socket编程详细介绍
Mar 23 Python
Python搭建FTP服务器的方法示例
Jan 19 Python
Python机器学习库scikit-learn安装与基本使用教程
Jun 25 Python
Python操作mongodb数据库的方法详解
Dec 08 Python
python实现趣味图片字符化
Apr 30 Python
如何利用Pyecharts可视化微信好友
Jul 04 Python
python+selenium select下拉选择框定位处理方法
Aug 24 Python
Pycharm创建文件时自动生成文件头注释(自定义设置作者日期)
Nov 24 Python
Python绘制K线图之可视化神器pyecharts的使用
Mar 02 Python
python如何进行基准测试
Apr 26 Python
Python中seaborn库之countplot的数据可视化使用
Jun 11 Python
python自动计算图像数据集的RGB均值
详解如何用Python实现感知器算法
python中24小时制转换为12小时制的方法
Jun 18 #Python
用Python selenium实现淘宝抢单机器人
python中pandas对多列进行分组统计的实现
python 常用的异步框架汇总整理
Jun 18 #Python
Opencv中cv2.floodFill算法的使用
You might like
PHP实现求两个字符串最长公共子串的方法示例
2017/11/17 PHP
jQuery+PHP实现图片上传并提交功能
2020/07/27 PHP
event对象的方法 兼容多浏览器
2009/06/27 Javascript
JS模拟的QQ面板上的多级可展开的菜单
2009/10/10 Javascript
基于jquery的下拉框改变动态添加和删除表格实现代码
2020/09/12 Javascript
js如何判断用户是在PC端和还是移动端访问
2014/04/24 Javascript
轻松创建nodejs服务器(10):处理上传图片
2014/12/18 NodeJs
Jquery对select的增、删、改、查操作
2015/02/06 Javascript
jQuery实现列表内容的动态载入特效
2015/08/08 Javascript
jquery实现表格中点击相应行变色功能效果【实例代码】
2016/05/09 Javascript
JQuery动态添加Select的Option元素实现方法
2016/08/29 Javascript
利用jQuery插件imgAreaSelect实现图片上传裁剪(同步显示图像位置信息)
2016/12/02 Javascript
深入理解 JavaScript 中的 JSON
2017/04/06 Javascript
JavaScript中splice与slice的区别
2017/05/09 Javascript
javaScript实现复选框全选反选事件详解
2020/11/20 Javascript
浅析node Async异步处理模块用例分析及常用方法介绍
2017/11/17 Javascript
Angular学习教程之RouterLink花式跳转
2018/05/03 Javascript
微信小程序生成二维码的示例代码
2019/03/29 Javascript
微信小程序8种数据通信的方式小结
2020/02/03 Javascript
使用Python发送邮件附件以定时备份MySQL的教程
2015/04/25 Python
python实现自动更换ip的方法
2015/05/05 Python
简单的python协同过滤程序实例代码
2018/01/31 Python
对PyTorch torch.stack的实例讲解
2018/07/30 Python
快速查找Python安装路径方法
2020/02/06 Python
在Windows上安装和配置 Jupyter Lab 作为桌面级应用程序教程
2020/04/22 Python
Python爬虫爬取百度搜索内容代码实例
2020/06/05 Python
浅谈Python描述数据结构之KMP篇
2020/09/06 Python
详解Html5 Canvas画线有毛边解决方法
2018/03/01 HTML / CSS
美国知名日用品连锁超市:Dollar General(多来店)
2017/01/14 全球购物
巴西备受欢迎的服装和生活方式品牌:FARM Rio
2020/02/04 全球购物
日本亚马逊官方网站:Amazon.co.jp
2020/04/14 全球购物
网上签名寄语活动留言
2014/01/18 职场文书
道路施工安全责任书
2014/07/24 职场文书
明星邀请函
2015/02/02 职场文书
幼儿园国庆节活动总结
2015/03/23 职场文书
交通安全温馨提示语
2015/07/14 职场文书