1python
1.1 安裝pymongo模塊mongodb
pip install pymongo
不是吧,就這麼簡單?數據庫
是啊,因此說,要不要學點Python呢?app
Python鏈接MongoDBide
02學習
2.1 鏈接MongoDB測試
2.1.1 MongoDB運行在本機上
spa
MongoDB運行在本機,且沒有作任何配置(用蘭州拉麪的話來講,純真)。3d
from pymongo import MongoClient
client1 = MongoClient()
print(client1)
2.1.2 MongoDB無權限認證
code
無權限認證就是不須要用戶名密碼,直接輸入IP地址和端口就能夠鏈接數據庫。
from pymongo import MongoClient
client2 = MongoClient('mongodb://192.168.0.130:27017')
print(client2)
2.1.3 MongoDB需認證,且運行在其餘機器上
在MongoDB中建立一個Python用戶,專戶管理本文數據。
1) 切換數據庫到admin
2) 查看目前擁有的用戶
3) 建立ipart的讀寫用戶Python
4) Python用戶測試鏈接
from pymongo import MongoClient
client3 = MongoClient('mongodb://python:123456@192.168.0.130:27017')
print(client3)
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)
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)
Python操做MongoDB
03
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)
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,我驕傲,好吧!
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)
若是對find的語法不是很熟悉,請點擊下面推文連接。
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)
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)
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)
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)
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)
注意細節
04
Python操做mongoDB進行增刪改查和mongoDB增刪改查,雖然有不少方面都是很是類似的,可是仍是有一些小細節須要注意。
4.1 空值
1) MongoDB操做
db.getCollection('performer').find({'sex':null})
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)
4.2 布爾值
1) MongoDB操做
db.getCollection('performer').find({'human':false})
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)
4.3 排序
1) MongoDB操做
db.getCollection('performer').find().sort({'age':-1}).limit(3)
2)Python操做
# MongoDB sort,Python sort
rows_3 = collection.find({},{'_id':0}).sort('age',-1).limit(3)
for row in rows_3 :
print(row)
4.4 查詢_id列
1) MongoDB操做
db.getCollection('performer').find({'_id':ObjectId('5e513716cd21cd029f3600bb')})
2)Python操做
from bson import ObjectId
rows_4 = collection.find({'_id':ObjectId('5e513716cd21cd029f3600bb')})
for row in rows_4 :
print(row)