日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

利用Python操作MongoDB數據庫的詳細指南_python

作者:練習時長六年半的Programmer ? 更新時間: 2023-04-18 編程語言

數據庫的分類

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

MySQL與NoSQL之間的區別:

1、MySQL是一個基于表格設計的關系數據庫,而NoSQL本質上是非關系型的基于文檔的設計。

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

3、MySQL的嚴格模式限制并不容易擴展,而NoSQL可以通過動態模式特性輕松擴展。

4、MySQL中創建數據庫之前需要詳細的數據庫模型,而在NoSQL數據庫類型的情況下不需要詳細的建模。

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

6、MySQL是一個關系數據庫,其設計約束靈活性較低;而NoSQL本質上是非關系型的,與MySQL相比,它提供了更靈活的設計。

7、MySQL中使用的標準語言是SQL;而NoSQL中缺乏標準的查詢語言。

mongodb是什么

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

mongodb 的數據庫、集合

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

使用Python操作mongodb

安裝 mongodb

終端運行

pip install pymongo

連接數據庫

client = pymongo.MongoClient(host, port)

host是地址,port 是端口。

切換數據庫 第一種方法

db_name = client['db_name']

其中 db_name 是你的數據庫名。

第二種方法

db_name = client.get_database('db_name')

其中 db_name 是你的數據庫名。

第三種方法

db_name = client.db_name

切換集合

db_name.test

其中 test 是集合名,沒有這個集合會自動創建。

添加數據

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

其中 test 是集合名。

添加數據用 insert_one 方法。

其中,data 是要插入的數據,它的類型是鍵值對,即 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}]

刪除數據

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

查詢表達式有這些

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

例如,刪除 test 集合中 name 是 XiaoMing 的所有數據

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

修改數據

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

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

查找數據

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

原文鏈接:https://blog.csdn.net/m0_64036070/article/details/128906558

欄目分類
最近更新