標籤:io os 使用 資料 sp cti on c ad
出於對mysql的天然不信任(不瞭解),準備嘗試些新東東,redis是記憶體資料庫有些瞭解,這回試試更有儲存感覺的mongodb
from pymongo import Connection
con = Connection()
connection = pymongo.Connection(‘localhost‘, 27017)
db = con.test # 資料庫名為test
posts = db.post
2 >>> post1 = {"title":"I Love Python",
3 "slug":"i-love-python",
4 "author":"SErHo",
5 "content":"I LovePython....",
6 "tags":["Love","Python"],
7 "time":datetime.datetime.now()}
一條記錄就是一個 {} dic, 內有各種key, 對應value可以是函數值
posts.insert(post1)
把記錄存入資料庫
post = posts.find ()
尋找所有記錄
post.count()
得到所有記錄數
posts.find_one({"slug":"python-mongodb"})
尋找一條記錄
posts.update({"_id":post["_id"]},post)
更新一條記錄post
1 >>> posts.update({"_id":post["_id"]},{"$set":
2 {"content":"TestUpdate SET...."}})
用 $set 更新一條記錄裡的一個key-value對中的value
>>> posts.update({"_id":post["_id"]},{"$inc": {"views":1}})
$inc 給 記錄中的views對應值加1, 如果沒有views這個key 就建立,並賦值 1?
>>> posts.update({"_id":post["_id"]},{"$push":{"tags":"Test"}})
給數群組類型的值append一個值
2 >>> posts.update({"_id":post["_id"]},{"$addToSet":
3 {"tags":{"$each":["Python","Each"]}}})
給數群組類型的值append一系列值,同時確保不會有重複值
1 >>> posts.update({"_id":post["_id"]},{"$pop":{"tags":1}})
將數群組類型的值pop出末尾的一個值,如果是{"$pop":{"tags":-1}}則pop出第一個
可以使用”$pull”來刪除數組中指定的值,它會刪除數組中所有匹配的值。如何修改其中的一個值呢?可以先刪除掉,再增加一個進去,還有就是直接定位修改。比如tags數組中,”Python”是第一個,想把它改成”python”,可以通過下標直接選擇,就是tags[0],然後使用上面 的”$set”等修改器,如果不確定可以使用$來定位:
1 >>> posts.update({"tags":"MongoDB"},{"$set":{"tags.$":"Hello"}})
這個將先搜尋tags中滿足”MongoDB”的,如果找到,就把它修改為”Hello”。可以看到上面的update這個函數已經有兩個參數了, 它還有第3個參數upsert,如果設為”True”,則如果沒有找到匹配的文檔,就會在匹配的基礎上建立一個文檔,具體執行個體就不講了。
批量插入
new_posts =[{"name":"a.payment.FakeInst.a","family":"FakeInst", "category":"惡意計費", "behavior":"後台發送計費簡訊"},{"name":"a.payment.Umeng.a","family":"Umeng", "category":"惡意計費", "behavior":"1. 後台從伺服器端擷取指令, 自動傳送簡訊,訂製計費服務,並攔截指定號碼簡訊。 2. 後台從伺服器端擷取指令,自動類比訪問廣告,消耗使用者流量"}]
malinfo.insert(new_posts)
Out[13]: [ObjectId(‘527281323387e31671aa91b2‘),ObjectId(‘527281323387e31671aa91b3‘)]
python操作mongodb