您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關(guān)python數(shù)據(jù)庫開發(fā)之MongoDB安裝及Python3操作MongoDB數(shù)據(jù)庫的示例分析,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
MongoDB 是由C++語言編寫的,是一個基于分布式文件存儲的開源數(shù)據(jù)庫系統(tǒng)。
在高負載的情況下,添加更多的節(jié)點,可以保證服務(wù)器性能。
MongoDB 旨在為WEB應(yīng)用提供可擴展的高性能數(shù)據(jù)存儲解決方案。
MongoDB 將數(shù)據(jù)存儲為一個文檔,數(shù)據(jù)結(jié)構(gòu)由鍵值(key=>value)對組成。MongoDB 文檔類似于 JSON 對象。字段值可以包含其他文檔,數(shù)組及文檔數(shù)組。
大而復(fù)雜的數(shù)據(jù)
移動和社會基礎(chǔ)設(shè)施數(shù)據(jù)
內(nèi)容管理和交付
用戶數(shù)據(jù)
管理數(shù)據(jù)中心
MongoDB 的架構(gòu)較少。它是一個文檔數(shù)據(jù)庫,它的一個集合持有不同的文檔。
從一個到另一個的文檔的數(shù)量,內(nèi)容和大小可能有差異。
MongoDB 中單個對象的結(jié)構(gòu)很清淅。
MongoDB 中沒有復(fù)雜的連接。
MongoDB 提供深度查詢的功能,因為它支持對文檔的強大的動態(tài)查詢。
MongoDB 很容易擴展。
它使用內(nèi)部存儲器來存儲工作集,這是其快速訪問的原因。
不支持事務(wù)操作
占用空間過大
MongoDB沒有如MySQL那樣成熟的維護工具
無法進行關(guān)聯(lián)表查詢,不適用于關(guān)系多的數(shù)據(jù)
復(fù)雜聚合操作通過mapreduce創(chuàng)建,速度慢
模式自由, 自由靈活的文件存儲格式帶來的數(shù)據(jù)錯誤
下載 3.0.6 版本
curl -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.0.6.tgz
安裝
tar -zxvf mongodb-linux-x86_64-3.0.6.tgz
移動文件夾
mv mongodb-linux-x86_64-3.0.6/ /usr/local/mongodb
增加環(huán)境變量
export PATH=/usr/local/mongodb/bin:$PATH
nohup /usr/local/mongodb/bin/mongod --dbpath=/data/db --rest > /usr/local/mongodb/mongo.log 2>&1 &
netstat -tnlp|grep mongo
27017是默認開的mongodb端口,28017是默認的web訪問端口
效果
如果開了外網(wǎng)端口,用瀏覽器查看是否外網(wǎng)訪問
/usr/local/mongodb/bin/mongo
效果
show dbs
效果
# 切換分支 use mongodb_test # 顯示列表 show tables # 顯示列表 show collections
show tables 和 show collections 效果相同
效果
db.col_test.find()
效果
pip install pymongo
注意,如果創(chuàng)建的數(shù)據(jù)庫、表單中沒有數(shù)據(jù),是顯示不出來數(shù)據(jù)庫的。
from pymongo import MongoClient client_ip = "193.112.61.11" client_port = 27017 my_client = MongoClient(client_ip, client_port) db_list = my_client.list_database_names() print("數(shù)據(jù)庫列表:",db_list)
db = my_client.test print("db:", db) testDB(my_client)
db_name = 'mongodb_test' my_db = my_client[db_name]
表單(集合)列表
col_list = my_db.list_collection_names()
沒有此表單就創(chuàng)建這個表單,有此表單就連接這個表單
sheet_tab_one = my_db[name]
# 刪除一條數(shù)據(jù) def delData_one(my_col, myquery): result = my_col.delete_one(myquery) print(result.deleted_count,"數(shù)據(jù)已刪除")
# 刪除多條數(shù)據(jù) def delData_many(my_col, myquery): result = my_col.delete_many(myquery) print(result.deleted_count,"數(shù)據(jù)已刪除")
刪除數(shù)據(jù)
# 刪除一條數(shù)據(jù) def delData_one(my_col, myquery): result = my_col.delete_one(myquery) print(result.deleted_count,"數(shù)據(jù)已刪除")
刪除多條數(shù)據(jù)
# 刪除多條數(shù)據(jù) def delData_many(my_col, myquery): result = my_col.delete_many(myquery) print(result.deleted_count,"數(shù)據(jù)已刪除")
刪除一個表單
# 刪除一個表單 def delCol(my_col): my_col.drop() print("刪除表單成功")
# 修改匹配到的第一條數(shù)據(jù) def updateData_one(my_col, myquery, new_val): result = my_col.update_one(myquery, new_val) print(result.modified_count, "文檔已修改")
# 修改匹配到的多條數(shù)據(jù) def updateData_many(my_col, myquery, new_val): result = my_col.update_many(myquery, new_val) print(result.modified_count, "文檔已修改")
# 查詢一條數(shù)據(jù) def searchData_one(my_col): result = my_col.find_one() print(result)
# 查詢集合中所有數(shù)據(jù) def searchData_many(my_col, limit = 0): for item in my_col.find().limit(limit): print(item)
根據(jù)指定條件查詢 或者 正則表達式查詢
# my_query = {"name": "ShaShiDi"} # 根據(jù)指定條件查詢 # my_query = {"name": {"$regex": "^S"}} # 以下實例用于讀取 name 字段中第一個字母為 "S" 的數(shù)據(jù) # 根據(jù)指定條件查詢 或者正則表達式查詢(比如 my_query = { "name": { "$regex": "^S" } }) def searchData_miss(my_col, my_query): print("根據(jù)指定條件查詢: ", my_query) my_doc = my_col.find(my_query) for item in my_doc: print(item)
# 按照某字段排序 默認True是正序,F(xiàn)alse是倒序 def sortData(my_col, my_key, sortB = True): if sortB: my_doc = my_col.find().sort(my_key) else: my_doc = my_col.find().sort(my_key, -1) for item in my_doc: print(item)
from pymongo import MongoClient # 數(shù)據(jù)庫列表 def ifnotDB(my_client, db_name): db_list = my_client.list_database_names() print("數(shù)據(jù)庫列表:",db_list) if db_name in db_list: print("%s 數(shù)據(jù)庫已存在!"%db_name) else: print("%s 數(shù)據(jù)庫不存在!"%db_name) # 測試數(shù)據(jù)庫是否連接成功 返回測試結(jié)果 def testDB(my_client): db = my_client.test print("db:", db) return db # 創(chuàng)建一個數(shù)據(jù)庫 返回數(shù)據(jù)庫對象 def creatDB(my_client, name): my_db = my_client[name] ifnotDB(my_client, name) return my_db # 表單列表 def ifnotCol(my_db, col_name): col_list = my_db.list_collection_names() if col_name in col_list: print("%s 集合已存在!"%col_name) else: print("%s 集合不存在!"%col_name) # 創(chuàng)建一個表單 返回表單對象 def creatCol(my_db, name): sheet_tab_one = my_db[name] ifnotCol(my_db, name) return sheet_tab_one # 增加一條數(shù)據(jù) 返回_id def addData_one(my_col, my_json): result = my_col.insert_one(my_json) print(result.inserted_id,"增加一條數(shù)據(jù)")# 返回 _id 字段 return result.inserted_id # 增加多條數(shù)據(jù) 返回所有文檔對應(yīng)的 _id 值 def addData_many(my_col, my_jsons): result = my_col.insert_many(my_jsons) print(result.inserted_ids) return result.inserted_ids # 刪除一條數(shù)據(jù) def delData_one(my_col, myquery): result = my_col.delete_one(myquery) print(result.deleted_count,"數(shù)據(jù)已刪除") # 刪除多條數(shù)據(jù) def delData_many(my_col, myquery): result = my_col.delete_many(myquery) print(result.deleted_count,"數(shù)據(jù)已刪除") # 刪除一個表單 def delCol(my_col): my_col.drop() print("刪除表單成功") # 修改匹配到的第一條數(shù)據(jù) def updateData_one(my_col, myquery, new_val): result = my_col.update_one(myquery, new_val) print(result.modified_count, "文檔已修改") # 修改匹配到的多條數(shù)據(jù) def updateData_many(my_col, myquery, new_val): result = my_col.update_many(myquery, new_val) print(result.modified_count, "文檔已修改") # 按照某字段排序 默認True是正序,F(xiàn)alse是倒序 def sortData(my_col, my_key, sortB = True): if sortB: my_doc = my_col.find().sort(my_key) else: my_doc = my_col.find().sort(my_key, -1) for item in my_doc: print(item) # 查詢一條數(shù)據(jù) def searchData_one(my_col): result = my_col.find_one() print(result) # 查詢集合中所有數(shù)據(jù) def searchData_many(my_col, limit = 0): for item in my_col.find().limit(limit): print(item) # 根據(jù)指定條件查詢 或者正則表達式查詢(比如 my_query = { "name": { "$regex": "^S" } }) def searchData_miss(my_col, my_query): print("根據(jù)指定條件查詢: ", my_query) my_doc = my_col.find(my_query) for item in my_doc: print(item) if __name__ == "__main__": client_ip = "服務(wù)器IP地址" client_port = 27017 db_name = 'mongodb_test' col_name = 'col_test' my_json = {"name": "ShaShiDi", "url": "https://shazhenyu.blog.csdn.net/"} # 可以指定_id 我們也可以自己指定 id,插入 my_jsons = [{"_id": 1,"name": "sha", "url": "https://www.shazhenyu.com"},{"_id": 2,"name": "sha2", "url": "https://shazhenyu.com"}] my_query = {"name": "ShaShiDi"} my_query_regex = {"name": {"$regex": "^S"}} # 以下實例用于讀取 name 字段中第一個字母為 "S" 的數(shù)據(jù) my_key = "_id" new_values = {"$set": {"name": "ShaShiDi_new"}} my_client = MongoClient(client_ip, client_port) testDB(my_client) my_db = creatDB(my_client,db_name) my_col = creatCol(my_db,col_name) # # 增加一條數(shù)據(jù) # addData_one(my_col, my_json) # # 增加多條數(shù)據(jù) # addData_many(my_col, my_jsons) # # 刪除一個符合條件的集合 # delData_one(my_col, my_query) # # 刪除所有符合條件的集合 # delData_many(my_col, my_query) # # 刪除該集合中的所有文檔 # delData_many(my_col, {}) # # 刪除表單 # delCol(my_col) # # 修改第一個匹配到的文檔 # updateData_one(my_col, my_query, new_values) # # 修改所有符合條件的文檔 # updateData_many(my_col, my_query, new_values) # # 按照某字段排序 默認True是正序,F(xiàn)alse是倒序 # sortData(my_col, my_key) # # 根據(jù)指定條件查詢 # searchData_miss(my_col, my_query) # # 根據(jù)正則表達式查詢 # searchData_miss(my_col, my_query_regex) # # 查詢集合中所有數(shù)據(jù) 如果寫第二個參數(shù),就是指定條數(shù)記錄查詢 # # searchData_many(my_col) # searchData_many(my_col,2)
1、云計算,典型應(yīng)用OpenStack。2、WEB前端開發(fā),眾多大型網(wǎng)站均為Python開發(fā)。3.人工智能應(yīng)用,基于大數(shù)據(jù)分析和深度學習而發(fā)展出來的人工智能本質(zhì)上已經(jīng)無法離開python。4、系統(tǒng)運維工程項目,自動化運維的標配就是python+Django/flask。5、金融理財分析,量化交易,金融分析。6、大數(shù)據(jù)分析。
關(guān)于“python數(shù)據(jù)庫開發(fā)之MongoDB安裝及Python3操作MongoDB數(shù)據(jù)庫的示例分析”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。