用python向mongodb插入数据_Python操作MongoDB数据库(一)
Python操作MongoDB数据库(一)
前言
干货文章继续出发!隔的时间有些久了哈,对 MongoDB 安装回顾的同学,可以看下windows环境 《初识 MongoDB 数据库》。这篇文章结尾处,介绍到使用图形化界面来创建了 MongoDB 的库,表,以及数据。
今天这篇文章,来带你来玩一玩,如何使用 Python 操作 MongoDB 数据库。
MongoDB基础概念
为了有一个良好的学习体验,再操作之前简单的理解下 MongoDB 的基础数据类型会有极大的帮助。
- MongoDB将数据存储在灵活的,类似JSON的文档中,这意味着字段可能因文档而异,并且数据结构可以随时间变化
- 文档模型映射到应用程序代码中的对象,使数据易于使用
- 即席查询,索引和实时聚合提供了访问和分析数据的强大方法
- MongoDB是一个分布式数据库,因此内置了高可用性,水平扩展和地理分布,并且易于使用
- MongoDB可以免费使用。2018年10月16日之前发布的版本根据AGPL发布。2018年10月16日之后发布的所有版本(包括先前版本的修补程序)都在服务器端公共许可证(SSPL)v1下发布。
这段官方中文,是我从官网上机翻的,大家简单看下就好。顺便贴了下原版,因为技术性文章看原版是最好的!
如果了解关系型数据库(如MySQL等)的同学,那么其实学习起 MongoDB 也是非常容易理解的,理解层次上的抽象,便是学习的最快方式,我们呢,可以对比下这两种数据库的区别,一看便知!
怎么样,抽象与关系型数据库一对比,理解是否容易很多呢?
Python操作MongoDB
1. 安装 pymongo
首先要借助第三方库 pymongo ,所以安装:
pip
2. py 测试连接数据库
import
首先,调用 MongoClient 方法对数据库进行连接,参数一般我们写两个,host 写主机 ip ,还有一个是 port 端口号,port默认的话是 27017 可以省略。
db
创建一个名字叫 traffic 的数据库,并且打印返回如上图所示。
注意:如果 MongoDB 中无此库,需要在创建集合并且插入文档后,数据库方可自动创建。
什么意思呢?让我们用命令行工具来查看下,当 MongoDB 服务启动后,可以通过 bin 文件夹下的 mongo 进行连接,windows 系统大家可以自行右键 shift ,打开cmd进行操作,直接类似如下操作:
通过 show dbs; 命令查看当前 MongoDB 的数据库,而实则上,这里的命令对应的就是上一篇中图形化界面查看的样子:
所以,其实图形化界面的背后真谛,对应的都是命令行的执行。如果你新学了某一项新的技术,那么如果从命令行倒着往上层学习,只会事半功倍。
当然,除了以上的操作,还可以通过 py 代码去查询:
db_list = client.list_database_names()
代码的顺序,是先执行了创建数据库的操作,在执行了读取数据库的操作,可以看到,数据库并没有被创建。
3. py 插入 MongoDB 数据库(增加操作,简称增)
import pymongoclient = pymongo.MongoClient(host='127.0.0.1')
db = client.traffic
collections = db.person # 创建集合,student 相当于 mysql 的表名
当创建了名为 person 的集合时,执行代码,依然没有生成数据库。继续来为文档中插入文档和字段。
# 创建文档数据
person_one = {'name': '咪哥杂谈','age': '24','height': '175','weight': '60'
}
result = collections.insert_one(person_one) # 文档插入集合
print(result) # 打印结果
print(result.inserted_id) # 打印插入数据的返回 id 标识
使用 insert_one 对文档进行单条数据插入,返回结果自带了一个 inserted_id 的属性,当插入单条数据成功时,便返回个唯一 id 标识。
如何验证 MongoDB 中是否成功插入了呢?有三种方案,先来说前两种。
其一,最简单的方式,通过图形化工具直接进行查看,不难发现,当我们插入文档时,数据库可以看到有结果显示了:
其二,使用命令行的客户端进行查看(没有图形化工具的情况下):
show
pretty()中文是漂亮的意思,写上就是整齐展示,不写就是普通显示。
忘记说了~上面仅仅是一条数据插入,但如果你想对多条数据插入,可以这样操作:
# 创建文档数据
使用 insert_many 对文档进行多条数据插入,返回结果自带了一个 inserted_ids 的属性,当插入多条数据成功时,便返回个数组唯一 id 标识。
其三,便是使用我们的 py 进行查库操作,下面开新节点介绍。
4. py 查询 MongoDB 数据库(查询操作,简称查)
查询可以查询一条 find_one() 方法:
查询多条,调用 find () 方法:
一般我们用 find() 查询就行,既然是查询,当然我们可以对其指定想要返回的字段,就像 sql 数据库中 一样:
select
在 find() 方法里,传入如下代码,0代表不要,1代表要,注意,里面是两个参数,第一个参数是空的对象:
result
发现二者的区别了吗?唯一标识 _id 如果不手动置为 0 ,它是不会自动隐藏的,所以当你只想查询 name 和 age 字段时,需要手动 _id 置 0。
注意: 同时指定了 0 和 1 则会报错,除了 _id 与其他字段不同的情况:
查询还可以根据设定条件进行查询,如 MySQL 中的这样:
select
在 python 中,要如下使用,仅传入一个参数:
result2 = collections.find({'age': '22'})
查询到这里就结束了,本质上来说,MongoDB 还支持一些高级查询语法,比如通过正则表达式去查询,或是当条件与数字进行对比判断时,如何书写。但本项目中应该不涉及到高级查询,所以就不多介绍了,感兴趣的可以看下崔庆才老师的这篇博客,里面写的通俗易懂。
[Python3网络爬虫开发实战] 5.3.1-MongoDB存储cuiqingcai.com
总结
本篇介绍了 py 操作 mongo 的增加查询操作,还有更新和删除操作留在下一篇。篇幅有些过长了。
用python向mongodb插入数据_Python操作MongoDB数据库(一)相关推荐
- python封装类连接mysql数据_python操作mysql数据库基本类封装
# -*- coding: UTF-8 -*- import MySQLdb as mdb class MysqldbHelper(object): """操作mysql ...
- python往mysql存入数据_Python操作mysql之插入数据
之前有写过一篇python查询mysql数据的文章,今天写通过python插入数据到mysql数据库. 相关mysql视频教程推荐:<mysql教程> 先建库,建表,建用户mysql> ...
- [转载] python怎么获取redis中的数据_python操作redis数据库
参考链接: 使用Python在Selenium中进行非阻塞等待 3.redis基本命令 String set(name, value, ex=None, px=None, nx=False, xx=F ...
- python覆盖数据库重复数据_Python操作MySQL数据库,插入重复数据
sql = "INSERT INTO test_c(id,name,sex)values(%s,%s,%s)" param = (1,'AJ','MAN') n = cursor. ...
- python 删除set指定值_Python操作三大数据库 Redis
1.redis安装 pip install redis 2.redis连接(连接池) 所以为了节省资源,减少多次连接损耗,连接池的作用相当于缓存了多个客户端与redis服务端的连接. import r ...
- python怎么筛选excel数据_Python操作三个excel并过滤数据,python,筛选,其中
# -*- coding: UTF-8 -*- import os import xlrd import xlwt import xlwings as xw root_dir = os.path.ab ...
- layui table 复选框数据_Python操作三大数据库 Mysql
MYSQL是目前应用最广泛.普及度最高的开源关系型数据库.体积小.速度快.总体拥有成本低,开源是使得它广为普及的主要原因. 今天将 Python 与 Mysql 的结合,两者进行交互,一起来学习吧! ...
- python kafka消费最新数据_python kafka消费数据库
{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],&q ...
- MongoDB对数据的操作
MongoDB对数据的操作 MongoDB的集合操作 mongodb中的集合是一组文档的集,相当于关系型数据库中的一张表 创建集合 MongDB使用db.createCollection()函数来创建 ...
最新文章
- 零基础学习Java培训有什么攻略
- 欧几里德结构数据与 非欧几里德结构数据
- [转]NUnit详细使用方法
- 连接oracle10g数据库免安装oracle客户端解决办法 (转载)
- 哈希表(闭散列、拉链法--哈希桶)
- vc++6.0的应用程序打不开肿么办
- 第一课[编辑器设置-VC++6.0]
- 第二天 Linux常见命令
- (四)Trigger
- 8个球放入3个盒子方式_盒子这样做皮薄如纸,不露馅超好吃,孩子一口气吃好几个...
- 网页内容切换效果实现的15个jQuery插件
- 圆形Camera预览实现
- JDK8下载 (jdk-8u271-windows-x64和jdk-8u271-linux-x64.tar)
- 本地计算机出现多个网络连接,电脑网络连接出现感叹号?教你一招解决
- Nginx配置虚拟主机(基于域名、端口及IP)
- 2022圣诞节用canvas实现流星雨
- 着色 Shading
- 计算机操作员初级试题及答案,计算机操作员初级考试试题
- HTML实例1 _网页文章
- 魔法串 HDU - 4545(字符串dp)
热门文章
- ICML 2018大奖出炉:伯克利、MIT获最佳论文,复旦大学榜上有名
- MaxCompute(原ODPS)使用总结-初级篇
- PostgreSQL中如何查看一个表所对应的文件
- APPCAN学习笔记004---AppCan与Hybrid,appcan概述
- android——fragment长时间home或者锁屏java.lang.IllegalArgumentException:No view found for id for.......
- mkyaffs2image编译
- android初学之退出应用程序
- 在云中使用 MapReduce 和负载平衡
- 【Python】选择数组中的数,拼接成一个最大字符串数(易错题,cmp_to_key举例)
- SpringBatch接口BatchConfigurer详解