mongodb 3.4 安装_Python操作MongoDB

ca50376ea65352267c7a05f76f61009a.png

Hello,大家好!我是小安Sir,今天早上起床,我看到了床头的那本Python与MongoDB相关的书。

它在召唤我,Open 它,学习它,征服它!

那我就随了它的愿,顺便让更多人征服它,哈哈!

本文大纲

1. 安装pymongo模块

2. Python连接MongoDB

3. Python操作MongoDB

4. 注意细节


01 安装pymongo模块

1.1 安装pymongo模块

pip install pymongo
不是吧,就这么简单?
是啊,所以说,要不要学点Python呢?

02 Python连接MongoDB

2.1 连接MongoDB

2.1.1 MongoDB运行在本机上

MongoDB运行在本机,且没有做任何配置(用兰州拉面的话来说,纯真)。

from pymongo import MongoClient
client1 = MongoClient()
print(client1)

73dd4351ff5e1d1f06dcfb0e615f1018.png

2.1.2 MongoDB无权限认证

无权限认证就是不需要用户名密码,直接输入IP地址和端口就可以连接数据库。

from pymongo import MongoClient
client2 = MongoClient('mongodb://192.168.0.130:27017')
print(client2)

d78e4ae1568b2187d18bad948879f1fe.png

2.1.3 MongoDB需认证,且运行在其他机器上

在MongoDB中创建一个Python用户,专户管理本文数据。

1) 切换数据库到admin

280c4dcf4820bf1828bc059e4ed645cc.png

2) 查看目前拥有的用户

028b10d4aedf06ed6e838e9985a66a15.png

3) 创建ipart的读写用户Python

2114d3e682a98e9935cab4cad1845d35.png

4) Python用户测试连接

from pymongo import MongoClient
client3 = MongoClient('mongodb://python:123456@192.168.0.130:27017')
print(client3)

b41a31ae48bba1278b645dda5758853b.png

2.2 指定MongoDB的数据库和表

2.2.1 点点点方式

from pymongo import MongoClient
client = MongoClient('mongodb://192.168.0.130:27017')
database = client.ipart
collection = database.performer
print(database)
print(collection)

b68ea5d7830ecb577b43fca84220df0f.png

2.2.2 很明显的方式

from pymongo import MongoClient
client = MongoClient('mongodb://192.168.0.130:27017')
db_name = 'ipart'
collection_name = 'perform'
database = client[db_name]
collection = database[collection_name]
print(database)
print(collection)

8bda6f28d4ce08e449ed8fceb87ce4a4.png

03 Python操作MongoDB

3.1 插入数据

3.1.1 Insert_one

插入一条数据。

collection.insert_one({'name':'小安','sex':'man','age':19,'job':'不自由学习者','story':'爱情公寓的隔壁','best_wishes':'不清楚'})
rows = collection.find()
print(rows)
print(type(rows))
print()
for row  in rows :
    print(row)

4a5c51fdd497269414d71dc681fab766.png

3.1.2 insert_many

顾名思义,一下子插入N条数据。

data_list = [
{'name':'胡一菲','sex':'woman','age':23.5,'job':'弹一闪教师','story':'爱情公寓','best_wishes':'不清楚'},
{'name':'陈美嘉','sex':'woman','age':23,'job':'吕子乔的老婆','story':'爱情公寓','best_wishes':'不清楚'},
{'name':'唐悠悠','sex':'woman','age':22,'job':'专业演员','story':'爱情公寓','best_wishes':'不清楚'},
{'name':'林宛瑜','sex':'woman','age':20,'job':'林氏才女','story':'爱情公寓','best_wishes':'不清楚'},
{'name':'秦羽墨','sex':'woman','age':23,'job':'有钱人的追求者','story':'爱情公寓','best_wishes':'不清楚'},
{'name':'诸葛大力','sex':'woman','age':19,'job':'最强大脑','story':'爱情公寓','best_wishes':'不清楚'},
{'name':'咖喱酱','sex':'woman','age':19,'job':'吃货','story':'爱情公寓','best_wishes':'不清楚'},
{'name':'张大炮','sex':'man','age':25,'job':'二营长的大炮','story':'爱情公寓','best_wishes':'不清楚'},
{'name':'吕子乔','sex':'man','age':26,'job':'鼓励师','story':'爱情公寓','best_wishes':'不清楚'},
{'name':'曾小贤','sex':'man','age':27,'job':'电台主持人','story':'爱情公寓','best_wishes':'不清楚'},
{'name':'关谷神奇','sex':'man','age':27,'job':'漫画家','story':'爱情公寓','best_wishes':'不清楚'},
{'name':'白开','sex':'man','age':100,'job':'小黑','story':'爱情公寓','best_wishes':'不清楚'},
{'name':'陆展博','sex':'man','age':21,'job':'外星人','story':'爱情公寓','best_wishes':'不清楚'},
{'name':'张益达','sex':'man','age':29,'job':'倒霉的好人','story':'爱情公寓','best_wishes':'不清楚'},
{'name':'斯内克','sex':'man','age':99,'job':'','story':'爱情公寓','best_wishes':'不清楚'},
{'name':'赵海棠','sex':'man','age':22,'job':'大文豪','story':'爱情公寓','best_wishes':'不清楚'},
{'name':'张伟','sex':'man','age':26,'job':'律政先锋','story':'爱情公寓','best_wishes':'不清楚'},
{'name':'小则又沐风','sex':'woman','age':21,'job':'吕子乔的虚幻情人','story':'爱情公寓','best_wishes':'不清楚'},
{'name':'吕小布','sex':'man','age':25,'job':'僚机吕布','story':'爱情公寓','best_wishes':'不清楚'}
]
collection.insert_many(data_list)
rows_all = collection.find()
for row in rows_all:
    print(row)

3.2 查询数据

查询数据,有find_one和find,一般使用find。

3.2.1 find_one

找出第一条数据咯,什么条件都不用加,这这这有卵用啊?我是高手高手高高手,我用find,我骄傲,好吧!

789e0a6d970cb9261c179ff8c97124ae.png

3.2.2 find

举个栗子~

# 限定查询条件   --$lt 少于,$gt 大于,$ne 不等于
rows_select = collection.find({'age':{'$lte':25,'$gt':21},
                         'name':{'$ne':'张大炮'}  }   )
for row in rows_select:
    print(row)

959bc6403823571c69b13bf8c87ee6e4.png

如果对find的语法不是很熟悉,请点击下面推文链接。

MongoDB入门教程

3.3 更新数据

3.3.1 普通update_one

更新一条符合条件的数据,如果有多条数据符合,则从上往下开始更新,一次更新一条。

collection.update_one({'name':'张益达'},{'$set':{'age':100}})
rows_update1 = collection.find({'name':'张益达'})
for row in rows_update1:
    print(row)

c2c4d102c00b0a62fa3cf19e78766e4b.png

3.3.2 另类update_one

有一种更新叫作没有该数据"我"就插入,有"我"就更新,怎么样,是不是很霸道!

# update_one & upsert
collection.update_one({'name':'蟑螂鼠'},{'$set':{'age':999,'story':'爱情公寓'}},upsert=True)
rows_update2 = collection.find({'age':{'$gt':100}})
for row in rows_update2:
    print(row)

a609b94502648818c34a603961bd3b57.png

3.3.3 update_many

一次性更新所有符合条件的数据。

# update_many
collection.update_many({'story':'爱情公寓'},{'$set':{'story':'爱情公寓1-5','best_wishes':'感谢陪伴,赞!'}})
rows_update3 = collection.find({}).limit(5)
for row in rows_update3:
    print(row)

d7ea8baf24e3a003c40bbdd7524e49d9.png

3.4 删除数据

3.4.1 delete_one

删除一条符合条件的数据,如果有多条数据符合,则从上往下开始删除,一次删除一条。

# delete_one
collection.delete_one({'name':'小安'})
rows_delete1 = collection.find({'name':'小安'})
for row in rows_delete1:
    print(row)

52cb56d3520100b19a1e7fc1ed4a6fdd.png

3.4.2 delete_many

一次性删除所有符合条件(sex='man')的数据。

# delete_many
collection.delete_many({'sex':'man'})
rows_delete2 = collection.find({})
for row in rows_delete2:
    print(row)

8aea36efa9b98957f41f787403719e1a.png

04 注意细节

Python操作mongoDB进行增删改查和mongoDB增删改查,虽然有很多方面都是非常相似的,但是还是有一些小细节需要注意。

4.1 空值

1) MongoDB操作

db.getCollection('performer').find({'sex':null}) 

50254d6cf81be71b607045bea7a0abc6.png

2)Python操作

# MongoDB null,Python None
# rows_1 = collection.find({'sex':null})  ,此为错误代码
rows_1 = collection.find({'sex':None})
for row in rows_1:
    print(row)

519c23747547d884730c65a769be83a0.png

4.2 布尔值

1) MongoDB操作

db.getCollection('performer').find({'human':false}) 

11f36119093433780274effac7f75904.png

2)Python操作

# MongoDB true/false,Python True/False
# collection.update_one({'name':'蟑螂鼠'},{'$set':{'human':False}})  
rows_1 = collection.find({'human':False})
for row in rows_1:
    print(row)

93748bf0f72593a92d36fd696ba8ee39.png

4.3 排序

1) MongoDB操作

db.getCollection('performer').find().sort({'age':-1}).limit(3)

3777df45f26c66a0a33b1a37b9c51532.png

2)Python操作

# MongoDB sort,Python sort
rows_3 = collection.find({},{'_id':0}).sort('age',-1).limit(3)
for row in rows_3 :
    print(row)

f8e083255a49ef689a687cf7e0033e47.png

4.4 查询_id列

1) MongoDB操作

db.getCollection('performer').find({'_id':ObjectId('5e513716cd21cd029f3600bb')})  

b8caf02308da8e2e4a12659fbef9ef29.png

2)Python操作

from bson import ObjectId

rows_4 = collection.find({'_id':ObjectId('5e513716cd21cd029f3600bb')})  
for row in rows_4 :
    print(row)

28910cb6732aca59b274a3637a58b54a.png

看起来就这事回事,共通的代码很多嘛!

的确如此!用python融会贯通各语言,就是牛!

往期回顾

Python切割文件教程一 | 我的“大马士革命刀"

Python切割文件教程二 | 我的“大马士革命刀"不Like补刀

Django博客教程一 | Django架构介绍

Django博客教程二 | Django入门版博客

Django博客教程三 | Django进阶版博客数据篇

Django博客教程四 | Django进阶版博客网页篇

能打码吗?

9ec99a30d9a8856bff9c893e165a3f78.png
这不是我的公众号,你别信!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值