前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python 操作 MongoDB 数据库(上)

Python 操作 MongoDB 数据库(上)

作者头像
编程文青李狗蛋
发布2019-11-07 16:11:27
6700
发布2019-11-07 16:11:27
举报
本文字数:2871 字 阅读本文大概需要:8 分钟

写在之前

在之前我用了 3 篇文章的篇幅来介绍了用 Python 操作 MySQL 数据库,今天呢,我们再来介绍另一种可以用 Python 操作的数据库 MongoDB。

MongoDB 也是当下比较火的数据库之一,因为时代的发展需要 NoSQL,还是老办法,在本篇文章中呢,我先来介绍一下 MongoDB 数据库的安装运行和使用,以及用 Python 连接 MongoDB,下面就开始今天的学习。

MongoDB 简介

在这之前,我们先来了解一下什么是 NoSQL:

NoSQL 也就是 Not only SQL,指的是非关系型数据库,它是为了大规模 Web 应用而生的,它的特征诸如模式自由、支持简易复制、简单的 API、大容量数据等。

MongoDB 是 NoSQL 中的一种,选择它的原因是它具有如下特点:

  • 面向文档存储。
  • 对任何对象可索引。
  • 复制和高可用性。
  • 自动分片。
  • 丰富的查询。
  • 快速就地更新。

基于 MongoDB 的特点,它擅长的领域如下:

  • 大数据。
  • 内容管理和交付。
  • 移动和社交基础设施。
  • 数据平台。

如果大家感兴趣的话,也可以去学习其它的 NoSQL 数据库。

安装 MongoDB

这个和 MySQL 一样,你要使用它,首先就要安装。因为篇幅有限且每个人的操作系统都不一样,具体怎么安装,我不在这赘述,网上的教程很多,随便 Google 一下就是一大堆。

启动 MongoDB

安装完毕后就可以启动数据库。我在这里建立一个简单的库,并且捎带说明 MongoDB 的基本要点,目的在于为后面用 Python 来操作它做铺垫。在这我以 windows 为例,首先进入到 MongoDB 的交互模式下:

上图我截取了一部分,在 windows 的 cmd 中,进入到你安装 MongoDB 的目录下的 bin 文件夹中,运行 mongo.exe 进入到 MongoDB 交互模式。进入之后有点类似 MySQL 的状态。

在 MongoDB 中,有一个全局变量 db,使用哪个数据库,哪个数据库就会作为对象被赋值给这个全局变量 db。如果这个数据库不存在,就会被新建。

代码语言:javascript
复制
> use mydb
switched to db mydb
> db
mydb
>

除非是向这个数据库中增加实质性的内容,否则它是看不到的。

代码语言:javascript
复制
> show dbs
admin   0.000GB
config  0.000GB
local   0.000GB

向这个数据库中增加一些东西,MongoDB 的基本单元是「文档」。所谓的「文档」就是类似于 Python 中的字典,以「键/值对」的方式保存数据。

代码语言:javascript
复制
> book = {"title":"zero study python","author":"rocky","like":"python"}
{ "title" : "zero study python", "author" : "rocky", "like" : "python" }
> db.books.insert(book)
WriteResult({ "nInserted" : 1 })
> db.books.find()
{ "_id" : ObjectId("5bab28b6a1888724cb5ba515"), "title" : "zero study python", "
author" : "rocky", "like" : "python" }

db 指向了数据库 mydb,books 是这个数据库里面的一个集合(类似于 MySQL 中的表),向集合 books 里面插入了一个文档(文档对应 MySQL 里面的记录)。「数据库」、「集合」、「文档」构成了 MongoDB 数据库。

上面的操作有一个比较有意思的地方,并没有 create 之类的命令,用到数据库,就通过 use ***,如果不存在就建立;用到集合,就通过 db.*** 来使用,如果没有就建立。可以总结为“随用,随取,随建立”,简单的一批。

代码语言:javascript
复制
> show dbs
admin   0.000GB
config  0.000GB
local   0.000GB
mydb    0.000GB

当有了内容以后,就可以看到刚才用到的数据库 mydb 了。简单的使用就是这些,下面就来重头戏啦,毕竟我们是主学 Python 的啊。

安装 pymongo

要用 Python 来驱动 MongoDB,必须要安装驱动模块,即 pymongo,这个跟操作 MySQL 是类似的。安装方法推荐如下(windows 下):

代码语言:javascript
复制
pip3 install pymongo

如果顺利就会看到最后的提示:

代码语言:javascript
复制
Installing collected packages: pymongo
Successfully installed pymongo-3.7.1

然后我们来看一下安装的版本号:

代码语言:javascript
复制
>>> import pymongo
>>> pymongo.version
'3.7.1'

上面 import pymongo 没有问题,证明一切都可以了。

Python 连接 MongoDB

既然 Python 驱动 MongoDB 的模块 pymongo 已安装完毕,那么接下来就是连接,即「建立连接对象」。

代码语言:javascript
复制
>>> import pymongo
>>> pymongo.Connection('localhost',27017)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'module' object has no attribute 'Connection'

竟然报错??怎么回事??明明很多书上都是这么写的,为啥会报错呢?一定要注意这里的坑!这个很版本有关系,我刚学的时候这里直接把我坑傻了。如何你用的是旧版本的 pymongo,比如 2.8 的,你仍然可以用上面的方法,但是你如果用的是新版本的,就得注意一下了,有时候不能盲目的相信书上的东西,因为会有些东西是会变的

代码语言:javascript
复制
>>> dir(pymongo)

是时候请出我们的 dir 来了,看看哪些方法可用,因为结果太多我就不贴上来了,你可以自行在交互模式运行,运行的结果你会发现里面没有 Connection() 这个方法,但是发现有一个 MongoClient(),这是柳暗花明又一村。

代码语言:javascript
复制
>>> client = pymongo.MongoClient('localhost',27017)

随着上面这行代码的运行,Python 已经和 MongoDB 建立了连接。刚才我们已经建立了一个数据库 mydb,并且在这个库里面有一个集合 books,于是:

代码语言:javascript
复制
>>> mdb = client.mydb

或者是:

代码语言:javascript
复制
>>> mdb = client['mydb']

上面的代码获得了数据库 mydb,并赋值给变量 mdb。

代码语言:javascript
复制
>>> mdb.collection_names()
[u'books']

查看集合,发现了我们已经建立好的那个 books,于是再获取这个集合,并赋值给一个变量 books:

代码语言:javascript
复制
>>> books = mdb["books"]

或者是:

代码语言:javascript
复制
>>> books = mdb.books

接下来,我们就可以操作这个集合中的具体内容啦。

写在之后

上面的 books 所引用的是一个 MongoDB 的集合对象,它跟前面学习过的其它对象一样,也有一些方法供我们使用,我会在明天的文章中再详细的给大家说明,敬请期待。

如果你觉得本篇文章对你有帮助的话,欢迎点赞支持一下。

The end。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-09-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python空间 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档