共計 2282 個字符,預計需要花費 6 分鐘才能閱讀完成。
自動寫代碼機器人,免費開通
這篇文章將為大家詳細講解有關 Python 調用 MongoDB 的方法,丸趣 TV 小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
使用 pymongo 對 MongoDB 進行的各種操作,下載相應平臺的版本,解壓即可。為方便使用,將 bin 路徑添加到系統 path 環境變量里。其中 mongod 是服務器,mongo 是客戶 shell,然后創建數據文件目錄:在 c 盤下創建 data 文件夾,里面創建 db 文件夾。
Python 怎么調用 MongoDB
安裝對應語言的 Driver,Python 安裝 pymongo
$easy_installpymongo
使用方法總結,摘自官方教程
創建連接
importpymongo
connection=pymongo.Connection(localhost ,27017)
切換數據庫
db=connection.test_database
獲取 collection
collection=db.test_collection
db 和 collection 都是延時創建的,在添加 Document 時才真正創建
文檔添加,_id 自動創建
importdatetime
post={ author : Mike ,
... text : Myfirstblogpost! ,
... tags :[mongodb , python , pymongo],
... date :datetime.datetime.utcnow()}
posts=db.posts
posts.insert(post)
ObjectId(...)
批量插入
new_posts=[{ author : Mike ,
... text : Anotherpost! ,
... tags :[bulk , insert],
... date :datetime.datetime(2009,11,12,11,14)},
...{ author : Eliot ,
... title : MongoDBisfun ,
... text : andprettyeasytoo! ,
... date :datetime.datetime(2009,11,10,10,45)}]
posts.insert(new_posts)
[ObjectId( ...),ObjectId(...)]
獲取所有 collection(相當于 SQL 的 showtables)
db.collection_names()
[u posts ,u system.indexes]
獲取單個文檔
posts.find_one()
{u date :datetime.datetime(...),u text :u Myfirstblogpost! ,u _id :ObjectId(...),u author :u Mike ,u tags :[u mongodb ,u python ,u pymongo]}
查詢多個文檔
forpostinposts.find():
...post
{u date :datetime.datetime(...),u text :u Myfirstblogpost! ,u _id :ObjectId(...),u author :u Mike ,u tags :[u mongodb ,u python ,u pymongo]}
{u date :datetime.datetime(2009,11,12,11,14),u text :u Anotherpost! ,u _id :ObjectId(...),u author :u Mike ,u tags :[u bulk ,u insert]}
{u date :datetime.datetime(2009,11,10,10,45),u text :u andprettyeasytoo! ,u _id :ObjectId(...),u author :u Eliot ,u title :u MongoDBisfun }
加條件的查詢
posts.find_one({author : Mike})
高級查詢
posts.find({date :{ $lt :d}}).sort(author)
統計數量
posts.count()
3
加索引
frompymongoimportASCENDING,DESCENDING
posts.create_index([(date ,DESCENDING),(author ,ASCENDING)])
u date_-1_author_1
查看查詢語句的性能
posts.find({date :{ $lt :d}}).sort(author)
.explain()[ cursor] u BtreeCursordate_-1_author_1posts.find({date :{ $lt :d}}).sort(author)
.explain()[ nscanned] 2
附自己總結的一點小心得,僅供參考
缺點
不是全盤取代傳統數據庫 (NoSQLFan:是否能取代需要看應用場景)
不支持復雜事務 (NoSQLFan:MongoDB 只支持對單個文檔的原子操作)
文檔中的整個樹,不易搜索,4MB 限制?(NoSQLFan:1.8 版本已經修改為 16M)
特點 (NoSQLFan:作者在這里列舉的很多只是一些表層的特點):
文檔型數據庫,表結構可以內嵌
沒有模式,避免空字段開銷 (SchemaFree)
分布式支持
查詢支持正則
動態擴展架構
32 位的版本最多只能存儲 2.5GB 的數據 (NoSQLFan:最大文件尺寸為 2G,生產環境推薦 64 位)
關于“Python 調用 MongoDB 的方法”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
向 AI 問一下細節