最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python數(shù)據(jù)庫開發(fā)之MongoDB安裝及Python3操作MongoDB數(shù)據(jù)庫詳細(xì)方法與實例

 更新時間:2020年03月18日 16:13:18   作者:沙振宇  
這篇文章主要介紹了python數(shù)據(jù)庫開發(fā)之MongoDB安裝及Python3操作MongoDB數(shù)據(jù)庫詳細(xì)方法與實例,需要的朋友可以參考下

MongoDB簡介

MongoDB 是由C++語言編寫的,是一個基于分布式文件存儲的開源數(shù)據(jù)庫系統(tǒng)。

在高負(fù)載的情況下,添加更多的節(jié)點,可以保證服務(wù)器性能。

MongoDB 旨在為WEB應(yīng)用提供可擴(kuò)展的高性能數(shù)據(jù)存儲解決方案。

MongoDB 將數(shù)據(jù)存儲為一個文檔,數(shù)據(jù)結(jié)構(gòu)由鍵值(key=>value)對組成。MongoDB 文檔類似于 JSON 對象。字段值可以包含其他文檔,數(shù)組及文檔數(shù)組。

MongoDB應(yīng)用場景

  • 大而復(fù)雜的數(shù)據(jù)
  • 移動和社會基礎(chǔ)設(shè)施數(shù)據(jù)
  • 內(nèi)容管理和交付
  • 用戶數(shù)據(jù)
  • 管理數(shù)據(jù)中心

MongoDB優(yōu)點

  • MongoDB 的架構(gòu)較少。它是一個文檔數(shù)據(jù)庫,它的一個集合持有不同的文檔。
  • 從一個到另一個的文檔的數(shù)量,內(nèi)容和大小可能有差異。
  • MongoDB 中單個對象的結(jié)構(gòu)很清淅。
  • MongoDB 中沒有復(fù)雜的連接。
  • MongoDB 提供深度查詢的功能,因為它支持對文檔的強(qiáng)大的動態(tài)查詢。
  • MongoDB 很容易擴(kuò)展。
  • 它使用內(nèi)部存儲器來存儲工作集,這是其快速訪問的原因。

MongoDB缺點

  • 不支持事務(wù)操作
  • 占用空間過大
  • MongoDB沒有如MySQL那樣成熟的維護(hù)工具
  • 無法進(jìn)行關(guān)聯(lián)表查詢,不適用于關(guān)系多的數(shù)據(jù)
  • 復(fù)雜聚合操作通過mapreduce創(chuàng)建,速度慢
  • 模式自由, 自由靈活的文件存儲格式帶來的數(shù)據(jù)錯誤

CentOSP安裝MongoDB

下載安裝MongoDB

下載 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

啟動MongoDB

nohup /usr/local/mongodb/bin/mongod --dbpath=/data/db --rest > /usr/local/mongodb/mongo.log 2>&1 &

查看是否啟動

netstat -tnlp|grep mongo

端口

27017是默認(rèn)開的mongodb端口,28017是默認(rèn)的web訪問端口

效果

如果開了外網(wǎng)端口,用瀏覽器查看是否外網(wǎng)訪問

MongoDB常用命令

連接mongoDB

/usr/local/mongodb/bin/mongo

效果

顯示數(shù)據(jù)庫列表

show dbs

效果

顯示表單(集合)列表

# 切換分支
use mongodb_test
# 顯示列表
show tables
# 顯示列表
show collections

show tables 和 show collections 效果相同

效果

查詢集合所有數(shù)據(jù)

db.col_test.find()

效果

Python3連接操作MongoDB

安裝PyMongo

 pip install pymongo

注意事項

注意,如果創(chuàng)建的數(shù)據(jù)庫、表單中沒有數(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]

Python3增刪改查MongoDB數(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ù)已刪除")

刪除數(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ù)

# 修改匹配到的第一條數(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ù)

# 查詢一條數(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ù)指定條件查詢 或者 正則表達(dá)式查詢

# my_query = {"name": "ShaShiDi"} # 根據(jù)指定條件查詢
# my_query = {"name": {"$regex": "^S"}} # 以下實例用于讀取 name 字段中第一個字母為 "S" 的數(shù)據(jù)
# 根據(jù)指定條件查詢 或者正則表達(dá)式查詢(比如 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)

排序數(shù)據(jù)

# 按照某字段排序 默認(rèn)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)

Python3操作MongoDB完整源碼

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, "文檔已修改")
# 按照某字段排序 默認(rèn)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ù)指定條件查詢 或者正則表達(dá)式查詢(比如 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)
  # # 按照某字段排序 默認(rèn)True是正序,F(xiàn)alse是倒序
  # sortData(my_col, my_key)
  # # 根據(jù)指定條件查詢
  # searchData_miss(my_col, my_query)
  # # 根據(jù)正則表達(dá)式查詢
  # searchData_miss(my_col, my_query_regex)
  # # 查詢集合中所有數(shù)據(jù) 如果寫第二個參數(shù),就是指定條數(shù)記錄查詢
  # # searchData_many(my_col)
  # searchData_many(my_col,2)

本文主要講解了MongoDB安裝及Python3操作MongoDB數(shù)據(jù)庫詳細(xì)方法與實例,更多關(guān)于Python3操作MongoDB數(shù)據(jù)庫的技巧請查看下面的相關(guān)鏈接

相關(guān)文章

  • Python使用Webargs實現(xiàn)簡化Web應(yīng)用程序的參數(shù)處理

    Python使用Webargs實現(xiàn)簡化Web應(yīng)用程序的參數(shù)處理

    在開發(fā)Web應(yīng)用程序時,參數(shù)處理是一個常見的任務(wù),Python的Webargs模塊為我們提供了一種簡單而強(qiáng)大的方式來處理這些參數(shù),下面我們就來學(xué)習(xí)一下具體操作吧
    2024-02-02
  • Numpy的簡單用法小結(jié)

    Numpy的簡單用法小結(jié)

    這篇文章主要介紹了Numpy的簡單用法小結(jié),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • Python、PyCharm安裝及使用方法(Mac版)詳解

    Python、PyCharm安裝及使用方法(Mac版)詳解

    這篇文章主要為大家詳細(xì)介紹了Mac版的Python、PyCharm安裝及使用方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-04-04
  • 解決python-redis-lock分布式鎖的問題

    解決python-redis-lock分布式鎖的問題

    這篇文章主要介紹了python-redis-lock分布式鎖的問題,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-10-10
  • Python中常見的異??偨Y(jié)

    Python中常見的異??偨Y(jié)

    當(dāng) Python 檢測到一個錯誤時,解釋器就會指出當(dāng)前流已經(jīng)無法繼續(xù)執(zhí)行下去,這時候就出現(xiàn)了異常。
    2018-02-02
  • 深入理解Python3 內(nèi)置函數(shù)大全

    深入理解Python3 內(nèi)置函數(shù)大全

    本篇文章主要介紹了Python3 內(nèi)置函數(shù),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-11-11
  • Python程序員面試題 你必須提前準(zhǔn)備!

    Python程序員面試題 你必須提前準(zhǔn)備!

    Python程序員面試,這些問題你必須提前準(zhǔn)備!供廣大Python程序員參考,預(yù)祝大家順利通過面試。
    2018-01-01
  • Python2.7版os.path.isdir中文路徑返回false的解決方法

    Python2.7版os.path.isdir中文路徑返回false的解決方法

    這篇文章主要為大家詳細(xì)介紹了Python2.7版os.path.isdir中文路徑返回false的解決方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-06-06
  • 終端能到import模塊 解決jupyter notebook無法導(dǎo)入的問題

    終端能到import模塊 解決jupyter notebook無法導(dǎo)入的問題

    這篇文章主要介紹了在終端能到import模塊 而在jupyter notebook無法導(dǎo)入的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-03-03
  • Python字典中的值求和兩種方法

    Python字典中的值求和兩種方法

    在Python中字典是一種無序的數(shù)據(jù)結(jié)構(gòu),它由一系列鍵和對應(yīng)的值組成,有時候我們需要對字典中的鍵對應(yīng)的值進(jìn)行求和操作,這篇文章主要給大家介紹了關(guān)于Python字典中值求和兩種方法的相關(guān)資料,需要的朋友可以參考下
    2023-11-11

最新評論

通江县| 朝阳区| 桃园市| 九寨沟县| 胶南市| 昭通市| 桑日县| 周宁县| 抚宁县| 东乡族自治县| 汤原县| 通榆县| 皮山县| 渝北区| 泰来县| 比如县| 于都县| 静宁县| 崇明县| 崇仁县| 防城港市| 新巴尔虎左旗| 伊通| 贵港市| 思茅市| 凌海市| 余姚市| 山东省| 安阳县| 永新县| 修文县| 尚志市| 合肥市| 荔浦县| 陕西省| 安平县| 金昌市| 道真| 来宾市| 桂阳县| 西乌珠穆沁旗|