PyMongo
安裝:
pip install pymongo
一、資料庫連接
資料庫連接,無密碼
from pymongo import MongoClient
# 資料庫鏈接,必須保證當前系統能正常訪問mongodb!!!
connect = MongoClient('mongodb://127.0.0.1:27017/')
# 創建/切換資料庫,資料庫不存在則會庫中有檔案以后,自動創建
my_db = connect['mofang']
print(my_db) # 資料庫資訊
# 創建/進入集合,集合不存在則會集合中有檔案以后,自動創建
my_collections = my_db['my_collections']
print(my_collections) # 集合資訊
資料庫連接,有密碼
from pymongo import MongoClient
# 資料庫鏈接,必須保證當前系統能正常訪問mongodb!!!
"""方式1:如果帳號密碼沒有特殊字符"""
# connect = MongoClient('mongodb://mofang:123456@127.0.0.1:27017/mofang')
"""方式2:當前庫的管理員連接"""
# from urllib import parse
# username = parse.quote_plus('mofang') # 對用戶名進行編碼
# password = parse.quote_plus('123456') # 對密碼進行編碼
# database = parse.quote_plus('mofang') # 對資料庫進行編碼
# connect = MongoClient('mongodb://%s:%s@127.0.0.1:27017/%s' % (username, password, database))
# my_db = connect['mofang']
# my_collections = my_db['my_collections']
"""方式3:基于超級管理員身份連接,不需要當前庫的管理員了"""
from urllib import parse
username = parse.quote_plus('root') # 對用戶名進行編碼
password = parse.quote_plus('123') # 對密碼進行編碼
database = parse.quote_plus('admin') # 對資料庫進行編碼
connect = MongoClient('mongodb://%s:%s@127.0.0.1:27017/%s' % (username, password, database))
my_db = connect['mofang']
my_collections = my_db['my_collections']
# 添加一篇檔案
data = {'name': 'xiaoming1號', 'sex': True, 'age':17}
ret = my_collections.insert_one(data)
print(ret.inserted_id)
二、資料庫管理
from pymongo import MongoClient
# 資料庫鏈接,必須保證當前系統能正常訪問mongodb!!!
connect = MongoClient('mongodb://root:123@127.0.0.1:27017/admin')
my_db = connect['mofang']
my_collecctions = my_db['my_collections']
# 查看所有資料庫[除了三個基本資料庫以外,其他資料庫只會顯示有檔案資料的]
ret = connect.list_database_names()
print(ret) # ['admin', 'config', 'local', 'mofang']
ret = my_db.list_collection_names()
print(ret) # ['my_collections']
# 資料庫的洗掉,僅僅是清空所有集合就可以了
三、集合管理
from pymongo import MongoClient
# 資料庫鏈接,必須保證當前系統能正常訪問mongodb!!!
connect = MongoClient('mongodb://root:123@127.0.0.1:27017/admin')
my_db = connect['mofang']
my_collecctions = my_db['my_collections']
# 查看所有資料庫[除了三個基本資料庫以外,其他資料庫只會顯示有檔案資料的]
# ret = connect.list_database_names()
# print(ret) # ['admin', 'config', 'local', 'mofang']
# ret = my_db.list_collection_names()
# print(ret) # ['my_collections']
# 洗掉集合的方式1
my_collecctions = my_db['notify_list']
my_collecctions.drop()
# 洗掉集合的方式2
my_db.drop_collection('notify_list')
四、檔案管理
1.添加檔案
from pymongo import MongoClient
# 資料庫鏈接,必須保證當前系統能正常訪問mongodb!!!
connect = MongoClient('mongodb://root:123@127.0.0.1:27017/admin')
my_db = connect['mofang']
my_collections = my_db['my_collections']
# 添加一條資料
document = {'name': 'xiaoming', 'mobile': '13012345678', 'age': 16, 'sex': True}
ret = my_collections.insert_one(document)
print(ret.inserted_id) # 回傳主鍵ID
# 添加多條資料
data_list = [
{ "name": "xiaobai", "mobile": "13322345678","age":16,"sex":False},
{ "name": "xiaohei", "mobile": "13322345678","age":20,"sex":True},
{ "name": "xiaohong", "mobile": "13322345678","age":13,"sex":False},
{ "name": "xiaolan", "mobile": "13322345678","age":17,"sex":True},
{ "name": "xiaolv", "mobile": "13322345678","age":17,"sex":True},
{ "name": "xiaolong", "mobile": "13322345678","age":16,"sex":False},
{ "name": "xiaofei", "mobile": "13322345678","age":18,"sex":True},
]
ret = my_collections.insert_many(data_list)
print(ret.inserted_ids)
2.查詢檔案
from pymongo import MongoClient
# 資料庫鏈接,必須保證當前系統能正常訪問mongodb
connect = MongoClient('mongodb://root:123@127.0.0.1:27017/admin')
my_db = connect['mofang']
my_collections = my_db['my_collections']
"""獲取一條"""
# document = my_collections.find_one()
# print(document) # {'_id': ObjectId('5fd21237d883925209b60067'), 'name': 'xiaoming1號', 'sex': True, 'age': 17}
# 獲取資料中的資訊
# print(document['name']) # xiaoming1號
"""獲取多條資料"""
# document_list = my_collections.find()
# print(document_list)
# for document in document_list:
# print(document)
# print(document['_id'])
"""欄位投影:只顯示部分欄位,1表示顯示,0表示隱藏"""
# document_list = my_collections.find({}, {'name': 1, '_id': 0})
# for document in document_list:
# print(document)
"""基于查詢條件獲取資料"""
# 值相等
# query = {'name': {'$eq': 'xiaoming'}}
# query = {'name': 'xiaoming'}
# document = my_collections.find_one(query)
# print(document) # {'_id': ObjectId('5fd2184326c8493bb4e2ace3'), 'name': 'xiaoming', 'mobile': '13012345678', 'age': 16, 'sex': True}
"""
query = {"age":{"$gt":17}} age > 17
query = {"age":{"$gte":17}} age >= 17
query = {"age":{"$lte":17}} age <= 17
query = {"age":{"$lt":17}} age < 17
query = {"age":{"$ne":17}} age != 17
query = {"age":{"$in":[16,17]}} age in [16,17]
"""
# query = {'age': {'$in': [16, 18]}}
# document_list = my_collections.find(query)
# for document in document_list:
# print(document)
"""排序"""
"""
單個欄位:
sort("age",-1) # 倒序
sort("age",1) # 升序
多個欄位:
sort([("age",-1),("_id",1)])
"""
# document_list = my_collections.find().sort('age', -1)
# document_list = my_collections.find().sort([('age', -1), ('_id', 1)])
# for document in document_list:
# print(document)
"""限制結果"""
document_list = my_collections.find().limit(3)
for document in document_list:
print(document)
3.洗掉檔案
from pymongo import MongoClient
# 資料庫鏈接,必須保證當前系統能正常訪問mongodb
connect = MongoClient('mongodb://root:123@127.0.0.1:27017/admin')
my_db = connect['mofang']
my_collections = my_db['my_collections']
"""洗掉檔案"""
# 洗掉一個檔案
query = {'name': 'xiaoming'}
ret = my_collections.delete_one(query)
print(ret.deleted_count) # 1:洗掉成功 0:沒有洗掉的資料
# 洗掉多個檔案
query = {'name': 'xiaoming1號'}
ret = my_collections.delete_many(query)
print(ret.deleted_count) # 大于0:洗掉成功 0:沒有洗掉的資料
# 查詢一條資料出來并洗掉
# 回傳一條資料,如果沒有,則回傳None
query = {'name': 'xiaobai'}
document = my_collections.find_one_and_delete(query)
print(document) # {'_id': ObjectId('5fd218accf506de09fbecd68'), 'name': 'xiaobai', 'mobile': '13322345678', 'age': 16, 'sex': False}
4.更新檔案
from pymongo import MongoClient
# 資料庫鏈接,必須保證當前系統能正常訪問mongodb
connect = MongoClient('mongodb://root:123@127.0.0.1:27017/admin')
my_db = connect['mofang']
my_collections = my_db['my_collections']
"""更新檔案"""
"""按條件更新一個檔案的指定資料"""
query = {'name': 'xiaofei'}
upsert = {'$set': {'age': 22}}
ret = my_collections.update_one(query, upsert)
print(ret.modified_count) # 0 表示沒有任何修改,1表示修改成功
"""按條件累加/累減指定數值一個檔案的指定資料"""
query = {'name': 'xiaofei'}
upsert = {'$inc': {'age': -1}} # 累減
upsert = {'$inc': {'age': 1}} # 累加
ret = my_collections.update_one(query, upsert)
print(ret.modified_count)
"""更新多條資料"""
# 把所有以"133"開頭的手機碼號的檔案,全部改成15012345678
query = {'mobile': {'$regex': '^133'}}
upsert = {'$set': {'mobile': '15012345678'}}
ret = my_collections.update_many(query, upsert)
print(ret.modified_count)
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/233561.html
標籤:其他
上一篇:springboot+mybatisplus 配置多資料源
下一篇:優化題目求助
