1. 程式人生 > >MongoDB的下載、安裝、python簡單使用.

MongoDB的下載、安裝、python簡單使用.

目錄

MongoDB簡介:

NoSQL 簡介

關係型資料庫遵循ACID規則

MongoDB下載:

建立資料目錄

命令列下執行 MongoDB 伺服器

連線MongoDB

通過配置配置檔案啟動服務

視覺化管理工具

python連線測試

插入資料

查詢資料

更新資料

刪除資料


MongoDB簡介:

MongoDB 是一個基於分散式檔案儲存的資料庫。由 C++ 語言編寫。旨在為 WEB 應用提供可擴充套件的高效能資料儲存解決方案。

MongoDB 是一個介於關係資料庫和非關係資料庫之間的產品,是非關係資料庫當中功能最豐富,最像關係資料庫的。

NoSQL 簡介

NoSQL(NoSQL = Not Only SQL ),意即"不僅僅是SQL"。-----‘以前以為是 No SQL !!  ’

應用實踐證明,關係模型是非常適合於客戶伺服器程式設計,遠遠超出預期的利益,今天它是結構化資料儲存在網路和商務應用的主導技術。NoSQL提倡運用非關係型的資料儲存,相對於關係型資料庫運用,這一概念無疑是一種全新的思維的注入。

關係型資料庫遵循ACID規則

事務在英文中是transaction,和現實世界中的交易很類似,它有如下四個特性:

1、A (Atomicity) 原子性

事務裡的所有操作要麼全部做完,要麼都不做,事務成功的條件是事務裡的所有操作都成功,只要有一個操作失敗,整個事務就失敗,需要回滾。

比如銀行轉賬,從A賬戶轉100元至B賬戶,分為兩個步驟:1)從A賬戶取100元;2)存入100元至B賬戶。這兩步要麼一起完成,要麼一起不完成,如果只完成第一步,第二步失敗,錢會莫名其妙少了100元。

2、C (Consistency) 一致性

資料庫要一直處於一致的狀態,事務的執行不會改變資料庫原本的一致性約束。

如完整性約束a+b=10,如果一個事務改變了a,那麼必須得改變b,使得事務結束後依然滿足a+b=10,否則事務失敗。

3、I (Isolation) 獨立性

獨立性是指併發的事務之間不會互相影響,如果一個事務要訪問的資料正在被另外一個事務修改,只要另外一個事務未提交,它所訪問的資料就不受未提交事務的影響。

比如現在有個交易是從A賬戶轉100元至B賬戶,在這個交易還未完成的情況下,如果此時B查詢自己的賬戶,是看不到新增加的100元的。

4、D (Durability) 永續性

永續性是指一旦事務提交後,它所做的修改將會永久的儲存在資料庫上,即使出現宕機也不會丟失。

以上內容來自:http://www.runoob.com/mongodb/mongodb-intro.html

MongoDB下載:

https://www.mongodb.com/download-center/community

建立資料目錄

MongoDB將資料目錄儲存在 db 目錄下。但是這個資料目錄不會主動建立,我們在安裝完成後需要建立它。請注意,資料目錄應該放在根目錄下((如: C:\ 或者 D:\ 等 )。

命令列下執行 MongoDB 伺服器

為了從命令提示符下執行 MongoDB 伺服器,你必須從 MongoDB 目錄的 bin 目錄中執行 mongod.exe 檔案。

d:\mongodb\bin\mongod --dbpath d:\data\db

連線MongoDB

我們可以在命令視窗中執行 mongo.exe 命令即可連線上 MongoDB,執行如下命令:

d:\mongodb\bin\mongo.exe

通過配置配置檔案啟動服務

在mongdb的目錄下編寫mongod.cfg檔案,並建立對應資料夾

systemLog:
    destination: file
    path: d:\data\log\mongod.log
storage:
    dbPath: d:\data\db

通過命令安裝配置檔案

d:\mongodb\bin\mongod.exe --config "d:\mongodb\mongod.cfg" --install

直接啟動即可,關閉服務端視窗即可停止服務

也可以使用指令啟動服務

視覺化管理工具

https://nosqlbooster.com/downloads

python連線測試

import pymongo
from pymongo import MongoClient
conn = MongoClient('localhost',27017)
db = conn.test
my_set = db.test_set

插入資料

insert插入一個列表多條資料不用遍歷,效率高, save需要遍歷列表,一個個插入

my_set.insert({"name":"zhangsan1","age":18})
my_set.save({"name":"zhangsan2","age":18})

查詢資料

(查詢不到則返回None)

for i in my_set.find():
    print(i)
for i in my_set.find({"name":"zhangsan1"}):
    print(i)
print(my_set.find_one({"name":"zhangsan2"}))

更新資料

my_set.update({"name":"zhangsan1"},{'$set':{"age":22}})
my_set.update({"name":"zhangsan2"},{'$set':{"age":33}})
for i in my_set.find():
    print(i)

刪除資料

my_set.remove({'name': 'zhangsan1'})
id = my_set.find_one({"name":"zhangsan2"})["_id"]
my_set.remove(id)
db.users.remove()