欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

利用Python操作MongoDB數(shù)據(jù)庫的詳細(xì)指南

 更新時間:2023年02月08日 14:26:21   作者:練習(xí)時長六年半的Programmer  
MongoDB是由C++語言編寫的非關(guān)系型數(shù)據(jù)庫,是一個基于分布式文件存儲的開源數(shù)據(jù)庫系統(tǒng),其內(nèi)容存儲形式類似JSON對象,下面這篇文章主要給大家介紹了關(guān)于利用Python操作MongoDB數(shù)據(jù)庫的相關(guān)資料,需要的朋友可以參考下

數(shù)據(jù)庫的分類

數(shù)據(jù)庫可以簡單的分為 MySQLNOSQL 兩類。這里的 NOSQL 不是 NO SQL 的意思,他的意思是 Not Only MySQL

MySQL與NoSQL之間的區(qū)別:

1、MySQL是一個基于表格設(shè)計的關(guān)系數(shù)據(jù)庫,而NoSQL本質(zhì)上是非關(guān)系型的基于文檔的設(shè)計。

2、MySQL數(shù)據(jù)庫,覆蓋了巨大的IT市場;具有固定市場的MySQL數(shù)據(jù)庫包含一個龐大的社區(qū)。而NoSQL數(shù)據(jù)庫是最新的到來,與MySQL相比,社區(qū)正在慢慢發(fā)展。

3、MySQL的嚴(yán)格模式限制并不容易擴(kuò)展,而NoSQL可以通過動態(tài)模式特性輕松擴(kuò)展。

4、MySQL中創(chuàng)建數(shù)據(jù)庫之前需要詳細(xì)的數(shù)據(jù)庫模型,而在NoSQL數(shù)據(jù)庫類型的情況下不需要詳細(xì)的建模。

5、MySQL提供了大量的報告工具,可以幫助應(yīng)用程序有效,而NoSQL數(shù)據(jù)庫缺少用于分析和性能測試的報告工具。

6、MySQL是一個關(guān)系數(shù)據(jù)庫,其設(shè)計約束靈活性較低;而NoSQL本質(zhì)上是非關(guān)系型的,與MySQL相比,它提供了更靈活的設(shè)計。

7、MySQL中使用的標(biāo)準(zhǔn)語言是SQL;而NoSQL中缺乏標(biāo)準(zhǔn)的查詢語言。

mongodb是什么

mongodb是一種數(shù)據(jù)庫,它可以儲存鍵值對類型的數(shù)據(jù)(json,字典)。目前流行的數(shù)據(jù)庫是 MySQL ,但它并不利于初學(xué)者入門。我之前發(fā)過 Tinydb,Sqlite3 等數(shù)據(jù)庫的講解,都比較簡單,那我這次來發(fā)一下mongodb數(shù)據(jù)庫。

mongodb 的數(shù)據(jù)庫、集合

一個數(shù)據(jù)庫下可以有多個集合,集合里存儲數(shù)據(jù)。集合可以理解為 SQL 數(shù)據(jù)庫中的表。

使用Python操作mongodb

安裝 mongodb

終端運(yùn)行

pip install pymongo

連接數(shù)據(jù)庫

client = pymongo.MongoClient(host, port)

host是地址,port 是端口。

切換數(shù)據(jù)庫 第一種方法

db_name = client['db_name']

其中 db_name 是你的數(shù)據(jù)庫名。

第二種方法

db_name = client.get_database('db_name')

其中 db_name 是你的數(shù)據(jù)庫名。

第三種方法

db_name = client.db_name

切換集合

db_name.test

其中 test 是集合名,沒有這個集合會自動創(chuàng)建。

添加數(shù)據(jù)

def add_data(data):
    result = db_name.test.insert_one(data)
    print(result.inserted_id)

其中 test 是集合名。

添加數(shù)據(jù)用 insert_one 方法。

其中,data 是要插入的數(shù)據(jù),它的類型是鍵值對,即 Python 中的字典。這是一條合法的 data

{"name":"XiaoMing","password":123456}

特殊的,如果要插入在指定 id ,可以這樣寫

result = db_name.test.insert_one({_id:1,"xxx":"xxx",...})

也可以插入多個,只需要把 data 變成

[{"name":"XiaoMing","password":123456},{"name":"XiaoHong","password":123456}]

刪除數(shù)據(jù)

db.test.remove(查詢表達(dá)式, isJustOne)

查詢表達(dá)式有這些

語法操作格式
$eq等于{:}
$lt小于{:{$lt:}}
$lte小于或等于{:{$lte:}}
$gt大于{:{$gt:}}
$gte大于或等于{:{$gte:}}
$ne不等于{:{$ne:}}
$or{$or:[{},{}]}
$in在范圍內(nèi){age:{$in:[val1,val2]}}
$nin不在范圍內(nèi){age:{$nin:[val1,val2]}}

例如,刪除 test 集合中 name 是 XiaoMing 的所有數(shù)據(jù)

db.test.remove({<!--{cke_protected}{C}%3C!%2D%2D%20%2D%2D%3E-->name:"XiaoMing"})

修改數(shù)據(jù)

db.collection.update(查詢表達(dá)式,新值,選項(xiàng)) 選項(xiàng): {upsert : true/false, multi : ture/false}

  • upsert:默認(rèn)為 false , 作用:無相應(yīng)記錄是否insert,與mysql中的replace同
  • multi:默認(rèn)為 false , 作用:是否作用于多條
#替換文檔,將name為zhangsan的第一個文檔替換為{"name":"lisi","age":10}
db.stu.update({"name":"zhangsan"},{"name":"lisi","age":10})
$set修改器,指定要更新的key,key不存在則創(chuàng)建,存在則更新。
#將name為zhangsan的所有文檔替換為{"name":"lisi","no":'100'}
db.stu.update({"name":"zhangsan"},{$set:{"name":"lisi","no":'100'}},{multi:true})

查找數(shù)據(jù)

#查找所有數(shù)據(jù)
db.集合名.find()
# 查找到所有匹配數(shù)據(jù)
db.集合名.find({條件文檔})
# 只返回匹配的第一個數(shù)據(jù)
db.stu.find({age:{$gt:16}}) #查詢年齡大于16的記錄
db.stu.find({$or:[{age:{$gt:18}},{name:"xiaoming"}]) #查詢年齡大于18或者名字是xiaoming的記錄
#使用$where后面寫一個函數(shù),返回滿足條件的數(shù)據(jù)
db.stu.find({$where:function(){return this.age>20}})
#用于讀取指定數(shù)量的文檔
db.集合名稱.find().limit(NUMBER)
#對查詢結(jié)果排序(參數(shù)1升序,參數(shù)-1降序)
db.集合名稱.find().sort({字段:1,...}) 
#統(tǒng)計結(jié)果中的文檔數(shù)
db.集合名稱.find({條件}).count()

到此這篇關(guān)于利用Python操作MongoDB數(shù)據(jù)庫的詳細(xì)指南的文章就介紹到這了,更多相關(guān)Python操作mongodb數(shù)據(jù)庫內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python內(nèi)置函數(shù)anext的具體使用

    python內(nèi)置函數(shù)anext的具體使用

    本文主要介紹了python內(nèi)置函數(shù)anext的具體使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-01-01
  • 利用python實(shí)現(xiàn)全屏愛心雨向喜歡的人表白

    利用python實(shí)現(xiàn)全屏愛心雨向喜歡的人表白

    馬上520了,教大家用Python做一個下愛心雨的特效,這篇文章主要給大家介紹了關(guān)于利用python實(shí)現(xiàn)全屏愛心雨向喜歡的人表白的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-05-05
  • Django集成CAS單點(diǎn)登錄的方法示例

    Django集成CAS單點(diǎn)登錄的方法示例

    這篇文章主要介紹了Django集成CAS單點(diǎn)登錄的方法示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-06-06
  • PyQt5 closeEvent關(guān)閉事件退出提示框原理解析

    PyQt5 closeEvent關(guān)閉事件退出提示框原理解析

    這篇文章主要介紹了PyQt5 closeEvent關(guān)閉事件退出提示框原理解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-01-01
  • Python用5行代碼寫一個自定義簡單二維碼

    Python用5行代碼寫一個自定義簡單二維碼

    今天小編就為大家分享一篇關(guān)于Python用5行代碼寫一個自定義簡單二維碼的文章,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2018-10-10
  • Python中出現(xiàn)"No?module?named?'requests'"的圖文解決辦法

    Python中出現(xiàn)"No?module?named?'requests'"

    這篇文章主要給大家介紹了關(guān)于Python中出現(xiàn)"No?module?named?'requests'"的解決辦法,"No?module?named?requests"是Python報錯提示,意味著你在使用某個Python程序或腳本時,沒有找到名為requests的模塊,需要的朋友可以參考下
    2023-11-11
  • 學(xué)懂Python字符編碼避免亂碼陷阱

    學(xué)懂Python字符編碼避免亂碼陷阱

    在Python編程中,處理字符編碼和亂碼問題是一個常見的挑戰(zhàn),特別是在處理文本數(shù)據(jù)、文件輸入/輸出和網(wǎng)絡(luò)通信時,可能會遇到各種字符編碼問題,本文章將深入探討Python中的亂碼問題,解釋其原理,并提供解決辦法,以確保你的應(yīng)用程序能夠正確處理各種編碼情況
    2023-12-12
  • Python幫你微信頭像任意添加裝飾別再@微信官方了

    Python幫你微信頭像任意添加裝飾別再@微信官方了

    昨天朋友圈刷爆了@微信官方的梗,從起初的為頭像添加國旗,到最后的各種Book思議的需求…而我呢?下面跟隨小編一起學(xué)習(xí)Python幫你微信頭像任意添加裝飾別再@微信官方了,感興趣的朋友一起看看吧
    2019-09-09
  • django 通過ajax完成郵箱用戶注冊、激活賬號的方法

    django 通過ajax完成郵箱用戶注冊、激活賬號的方法

    本篇文章主要介紹了django 通過ajax完成郵箱用戶注冊、激活賬號的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-04-04
  • Python?分支結(jié)構(gòu)詳解

    Python?分支結(jié)構(gòu)詳解

    這篇文章主要介紹了Python?分支結(jié)構(gòu),分支結(jié)構(gòu)包括單分支結(jié)構(gòu)、雙分支結(jié)構(gòu)、多分支結(jié)構(gòu)等內(nèi)容,下文ui分支結(jié)構(gòu)進(jìn)行詳細(xì)分析,需要的小伙伴可以參考一下
    2022-02-02

最新評論