Python 数据库骚操作 -- MongoDB

柔情痞子 提交于 2020-01-07 16:31:46

【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>

 ●  前言

 ●  MongoDB GUI 工具
 ●  PyMongo(同步)
 ●  Motor(异步)

 ●  后记

前言

最近这几天准备介绍一下 Python 与三大数据库的使用,这是第一篇,首先来介绍 MongoDB 吧,这里介绍 MongoDB 的两款操作库,走起!!

MongoDB GUI 工具

首先介绍一款 MongoDB 的 GUI 工具 Robo 3T,初学 MongoDB 用这个来查看数据真的很爽。可以即时看到数据的增删改查,不用操作命令行来查看。

操作界面图

PyMongo(同步)

PyMongo 是一个同步操作的数据存储库。可能大家都对 PyMongo 比较熟悉了,这里就简单介绍它的增删改查等操作。

连接

# 普通连接

client= MongoClient('localhost',27017)

client= MongoClient('mongodb://localhost:27017/')

#

# 密码连接

client= MongoClient('mongodb://username:password@localhost:27017/dbname')

db= client.zfdb

# db = client['zfdb']

test= db.test

# 增加一条记录

person = {'name':'zone','sex':'boy'}

person_id = test.insert_one(person).inserted_id

print(person_id)

# 批量插入

persons = [{'name':'zone','sex':'boy'}, {'name':'zone1','sex':'boy1'}]

result = test.insert_many(persons)

print(result.inserted_ids)

# 删除单条记录

result1 = test.delete_one({'name':'zone'})

pprint.pprint(result1)

# 批量删除

result1 = test.delete_many({'name':'zone'})

pprint.pprint(result1)

# 更新单条记录

res = test.update_one({'name':'zone'}, {'$set': {'sex':'girl girl'}})

print(res.matched_count)

# 更新多条记录

test.update_many({'name':'zone'}, {'$set': {'sex':'girl girl'}})

# 查找多条记录

pprint.pprint(test.find())

# 添加查找条件

pprint.pprint(test.find({"sex":"boy"}).sort("name"))

聚合

如果你是我的老读者,那么你肯定知道我之前的骚操作,就是用爬虫爬去数据之后,用聚合统计结合可视化图表进行数据展示。

aggs = [

{"$match": {"$or": [{"field1": {"$regex":"regex_str"}}, {"field2": {"$regex":"regex_str"}}]}},# 正则匹配字段

{"$project": {"field3":1,"field4":1}},# 筛选字段

{"$group": {"_id": {"field3":"$field3","field4":"$field4"},"count": {"$sum": 1}}},# 聚合操作

]

result = test.aggregate(pipeline=aggs)

例子:以分组的方式统计 sex 这个关键词出现的次数,说白了就是统计有多少个男性,多少个女性。

test.aggregate([{'$group': {'_id': '$sex', 'weight': {'$sum': 1}}}])

聚合效果图:(秋招季,用Python分析深圳程序员工资有多高?
)文章配图)

 ●  Motor(异步)
 ●  后记

阅读原文看更多内容:https://developer.aliyun.com/article/668009?utm_content=g_1000098497

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!