用Django全栈开发(进阶篇)——01. 如何让Django连接MongoDB

大家好,这是皮爷给大家带来的最新的学习Python能干啥?之Django教程的进阶版

在之前《用Django全栈开发》系列专辑里面,皮爷详细的阐述了如何编写一个完整的网站,具体效果可以浏览线上网站:Peekpa.com

从进阶篇开始,每一篇文章都是干货满满。这一节,我们来讲述一下,在Django中,如何连接到MongoDB,并操作。

皮爷的每一篇文章,都配置相对应的代码。这篇文章的代码对应的Tag是“Advanced_01”。

在这里插入图片描述

前瞻回顾

在之前的《用Django全栈开发》系列里面的Peekpa.com里面,我们使用的是MySQL数据库,具体的配置可以参考《用Django全栈开发——04. 连接MySQL数据库》那篇文章。

当时的配置主要是说要对peekpa/settings.py文件中的DATABASES变量就行修改即可。

那么今天,我们主要讲述的是如何让Django和我们的MongoDB数据库连接。

数据的准备

关于数据的准备,皮爷这里给大家准备好了一套测试数据。具体的测试数据内容,皮爷将会在之后的讲解中给大家展示。

数据的内容,皮爷这里使用的是:

https://www.mongodb.com/cloud

在这里插入图片描述

这里可以免费创建最大5GB存储容量的MongoDB数据库,并且交互存储。当然,如果你的需求很大,可以付费获取高级VIP会员服务,如下图。

在这里插入图片描述

好了,这里皮爷给大家准备的数据是我从日本气象厅的官网上面爬取的日本地震信息。

在这里插入图片描述

每一条数据都是以下结构:

{
    "_id" : ObjectId("5f0110fc601bd5114812c0fd"),
    "jp_create_time" : "2020-7-5-7-30-4",
    "jp_url" : "http://www.jma.go.jp/jp/quake/20200704232923395-05082651.html",
    "jp_title" : "2020年 7月 5日08時26分",
    "jp_id" : "2020070423292339505082651",
    "jp_time_num" : "2020-07-04-08-26-51",
    "jp_location_image_url" : "http://www.jma.go.jp/jp/quake/images/japan/20200704232923395-05082651.png",
    "jp_location" : "岐阜県飛騨地方",
    "jp_level" : "M3.1",
    "jp_max_level" : "震度1",
    "jp_time_text" : " 7月 5日08時29分"
}

具体到MongoDB中的关键信息如下(之后会用到,所以先罗列出来):

  • Database:PeekpaMongoData
  • Collection:JpEarth
  • User:peekpa-user
  • Password: peekpa2020

如何连接MongDB Cloud中的Atlas,网站中给我出我们连接方式。针对不同的Python版本,连接的代码格式也不一样。

在这里插入图片描述

我们这里将要使用到的连接规则则是Python 3.6的:

mongodb+srv://peekpa-user:<password>@peekpa.ofyco.mongodb.net/<dbname>?retryWrites=true&w=majority

可以看到,上面需要被替换的尖括号里的内容,就是之前罗列的基本信息。

Python连接MongoDB

一般而言,使用Python连接MongoDB数据库的话,市面上主要有两种方法:

  • 第一种是使用PyMongo;
  • 第二种是使用MongoEngine。

这里我们主要使用PyMongo。因为mongoengine实在是太难用了。接下来给大家一个小片段代码,来展示一下PyMongo是如何连接数据的。

PyMongo

PyMongo目前最新的版本是3.4.0版本(2020年7月5日),官网地址是:https://api.mongodb.com/python/3.4.0/

使用pip安装pymongo:

$ pip install pymongo

官网里面有详细的使用方法和API说明。感兴趣的同学可以自己去看一看。

我们将之前连接Atlas的连接扩充一下,补充一个程序,显示数据库中前5条数据:

import ssl
import pymongo

if __name__ == '__main__':
    client = pymongo.MongoClient(
        "mongodb+srv://peekpa-user:peekpa2020@peekpa.ofyco.mongodb.net/Peekpa?retryWrites=true&w=majority",
        ssl
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值