時(shí)間:2024-02-09 10:40作者:下載吧人氣:12
前言
因?yàn)橹皼](méi)用過(guò)mongo,所以最近的開(kāi)發(fā)踩了不少坑,現(xiàn)在熟練了不少。
mongo在許多地方用起來(lái)還有許多不如意的地方,比如不知道如何加行鎖,雖然mongo本身可以加寫鎖, 多寫的時(shí)候保證原子性,但不能向mysql在事務(wù)中 select … for update 這樣加鎖, 這樣可以在應(yīng)用代碼中添加邏輯并且保證該對(duì)應(yīng)行不被讀取或修改。
還好的是Mongodb4.0是支持事務(wù)的(看網(wǎng)上貌似3.6就支持了,但得自己開(kāi)啟)。剛好前端時(shí)間有些業(yè)務(wù)需求需要用到事務(wù)來(lái)保證數(shù)據(jù)的準(zhǔn)確性,因?yàn)橐粋€(gè)動(dòng)作內(nèi)有多條出入和修改的操作,如果中途報(bào)錯(cuò)需要回滾。
連接mongo的shell后使用 db.version() 來(lái)查看mongodb的版本
Python只用mongo事務(wù)
在python中使用使用 pymongo 來(lái)操作數(shù)據(jù)庫(kù)
import pymongo mc = pymongo.MongoClient('mongodb://localhost:27018', connect=False, maxPoolSize=2000) with mc.start_session() as session: with session.start_transaction(): mc['test']['test'].insert_one({'a': 1}, session=session) mc['test']['test'].delete_one({'a': 1}, session=session) ...
網(wǎng)友評(píng)論