Python操作資料庫之Mongodb

來源:互聯網
上載者:User

標籤:python   mongodb   

Python操作資料庫之Mongodb

 

 

 

一、安裝Pymongo

安裝Python的MongoDB模組PyMongo

 

1、源碼安裝:

https://pypi.python.org/packages/69/8a/2384c55f4bd494eeb6104a9b35c36714ba1178dcd08ee5a73b92eed3d8c1/pymongo-3.6.0.tar.gz#md5=2f64fa7691c77535b72050704cc12afb

解壓安裝包,進入解壓目錄執行安裝命令

python setup.py install

 

 

2、pip安裝

pip install pymongo

或者

easy_install pymongo

 

 

二、使用Pymongo操作Mongodb

1、匯入模組

>>> Import pymongo

 

2、建立MongodbClient的串連

>>> client = pymongo.MongoClient("localhost",27017)

或者

>>> client = pymongo.MongoClient(“mongodb://localhost:27017/”)

 

3、得到資料庫

db=client.mydb

或者

db=client[“mydb”]

 

4、得到集合

books=db.my_collection

或者

books=db[“my_collection”]

 

 

 

查詢

查詢一條資料,使用find_one():

>>> books.find_one(){u'lang': u'Python', u'_id': ObjectId('554f0e3cf579bc0767db9edf'), u'author': u'qiwsir', u'title': u'from beginner to master'}

 

 

查詢所有資料,使用find():

>>> for i in books.find():...     print i...{u'lang': u'Python', u'_id': ObjectId('554f0e3cf579bc0767db9edf'), u'author': u'qiwsir', u'title': u'from beginner to master'}{u'lang': u'english', u'title': u'physics', u'_id': ObjectId('554f28f465db941152e6df8b'), u'author': u'Newton'}

在 books 引用的對象中有 find() 方法,它返回的是一個可迭代對象,包含著集合中所有的文檔。

 

 

條件查詢:

>>> books.find_one(“lang”:”Python”){u'lang': u'Python', u'_id': ObjectId('554f0e3cf579bc0767db9edf'), u'author': u'qiwsir', u'title': u'from beginner to master'}

 

 

查詢結果排序:

>>> for i in books.find().sort("title", pymongo.ASCENDING):...     print i...{u'lang': u'python', u'_id': ObjectId('554f0e3cf579bc0767db9edf'), u'author': u'qiwsir', u'title': u'from beginner to master'}{u'lang': u'english', u'title': u'physics', u'_id': ObjectId('554f28f465db941152e6df8b'), u'author': u'Newton'}

 

這是按照"title"的值的升序排列的,注意 sort() 中的第二個參數,意思是升序排列。如果按照降序,就需要將參數修改為 Pymongo.DESCEDING,也可以指定多個排序鍵。

 

 

統計文檔數

>>> books.find().count()2

 

當前有2條資料

mongodb 中的每個文檔,本質上都是“索引值對”的類字典結構。這種結構,一經 Python 讀出來,就可以用字典中的各種方法來操作。與此類似的還有一個名為 json 的東西,可以閱讀本教程第貳季進階的第陸章模組中的《標準庫(8)。但是,如果用 Python 讀過來之後,無法直接用 json 模組中的 json.dumps() 方法操作文檔。其中一種解決方案就是將文檔中的'_id'索引值對刪除(例如:del doc['_id']),然後使用 json.dumps() 即可。讀者也可是使用 json_util 模組,因為它是“Tools for using Python’s json module with BSON documents”,請閱讀http://api.mongodb.org/Python/current/api/bson/json_util.html中的模組使用說明。

 

 

插入資料

插入1條資料:

>>> b2 = {"title":"physics", "author":"Newton", "lang":"english"}>>> books.insert(b2)ObjectId('554f28f465db941152e6df8b')

 

 

批量插入資料:

>>> n1 = {"title":"java", "name":"Bush"}>>> n2 = {"title":"fortran", "name":"John Warner Backus"}>>> n3 = {"title":"lisp", "name":"John McCarthy"}>>> n = [n1, n2, n3]>>> n[{'name': 'Bush', 'title': 'java'}, {'name': 'John Warner Backus', 'title': 'fortran'}, {'name': 'John McCarthy', 'title': 'lisp'}]>>> books.insert(n)[ObjectId('554f30be65db941152e6df8d'), ObjectId('554f30be65db941152e6df8e'), ObjectId('554f30be65db941152e6df8f')]

 

 

更新

對於已有資料,進行更新,是資料庫中常用的操作。比如,要更新 name 為 Hertz 那個文檔:

>>> books.update({"name":"Hertz"}, {"$set": {"title":"new physics", "author":"Hertz"}}){u'updatedExisting': True, u'connectionId': 4, u'ok': 1.0, u'err': None, u'n': 1}>>> books.find_one({"author":"Hertz"}){u'title': u'new physics', u'_id': ObjectId('554f2b4565db941152e6df8c'), u'name': u'Hertz', u'author': u'Hertz'}

在更新的時候,用了一個 $set 修改器,它可以用來指定索引值,如果鍵不存在,就會建立。

 

關於修改器,不僅僅是這一個,還有別的呢。

修改器

描述

$set

用來指定一個鍵的值。如果不存在則建立它

$unset

完全刪除某個鍵

$inc

增加已有鍵的值,不存在則建立(只能用於增加整數、長整數、雙精確度浮點數)

$push

數組修改器只能操作值為數組,存在 key 在值末尾增加一個元素,不存在則建立一個數組

 

 

刪除

刪除可以用 remove() 方法:

>>> books.remove({"name":"Bush"}){u'connectionId': 4, u'ok': 1.0, u'err': None, u'n': 1}>>> books.find_one({"name":"Bush"})>>>

這是將那個文檔全部刪除。當然,也可以根據 mongodb 的文法規則,寫個條件,按照條件刪除。

 

索引

索引的目的是為了讓查詢速度更快,當然,在具體的項目開發中,要視情況而定是否建立索引。因為建立索引也是有代價的。

>>> books.create_index([("title", pymongo.DESCENDING),])u'title_-1'

 

Python操作資料庫之Mongodb

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.