本篇內(nèi)容介紹了“ORM中的鎖與事務(wù)介紹”的有關(guān)知識(shí),在實(shí)際案例的操作過(guò)程中,不少人都會(huì)遇到這樣的困境,接下來(lái)就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!
創(chuàng)新互聯(lián)建站服務(wù)項(xiàng)目包括越秀網(wǎng)站建設(shè)、越秀網(wǎng)站制作、越秀網(wǎng)頁(yè)制作以及越秀網(wǎng)絡(luò)營(yíng)銷策劃等。多年來(lái),我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢(shì)、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,越秀網(wǎng)站推廣取得了明顯的社會(huì)效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到越秀省份的部分城市,未來(lái)相信會(huì)繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!
select_for_update(nowait=False,skip_locked=False)#注意必須用在事務(wù)里面,至于如何開(kāi)啟事務(wù),我們看下面的事務(wù)一節(jié)。
返回一個(gè)鎖住行直到事務(wù)結(jié)束的查詢集,如果數(shù)據(jù)庫(kù)支持,它將生成一個(gè)SELECT...FORUPDATE語(yǔ)句。
所有匹配的行將被鎖定,直到事務(wù)結(jié)束。這意味著可以通過(guò)鎖防止數(shù)據(jù)被其它事務(wù)修改。
一般情況下如果其他事務(wù)鎖定了相關(guān)行,那么本查詢將被阻塞,直到鎖被釋放。如果這不想要使查詢阻塞的話,使用select_for_update(nowait=True)。如果其它事務(wù)持有沖突的鎖,互斥鎖,那么查詢將引發(fā)DatabaseError異常。你也可以使用select_for_update(skip_locked=True)忽略鎖定的行。nowait和skip_locked是互斥的,同時(shí)設(shè)置會(huì)導(dǎo)致ValueError。
目前,postgresql,oracle和MySQL數(shù)據(jù)庫(kù)后端支持select_for_update()。但是,MySQL不支持nowait和skip_locked參數(shù)。
使用不支持這些選項(xiàng)的數(shù)據(jù)庫(kù)后端(如MySQL)將nowait=True或skip_locked=True轉(zhuǎn)換為select_for_update()將導(dǎo)致拋出DatabaseError異常,這可以防止代碼意外終止。
關(guān)于MySQL的事務(wù)處理,我的mysql博客已經(jīng)說(shuō)的很清楚了,那么我們來(lái)看看Django是如果做事務(wù)處理的。django1.8版本之前是有很多種添加事務(wù)的方式的,中間件的形式(全局的)、函數(shù)裝飾器的形式,上下文管理器的形式等,但是很多方法都在1.8版之后給更新了,下面我們只說(shuō)最新的:
在Web應(yīng)用中,常用的事務(wù)處理方式是將每個(gè)請(qǐng)求都包裹在一個(gè)事務(wù)中。這個(gè)功能使用起來(lái)非常簡(jiǎn)單,你只需要將它的配置項(xiàng)ATOMIC_REQUESTS設(shè)置為True。
它是這樣工作的:當(dāng)有請(qǐng)求過(guò)來(lái)時(shí),Django會(huì)在調(diào)用視圖方法前開(kāi)啟一個(gè)事務(wù)。如果請(qǐng)求卻正確處理并正確返回了結(jié)果,Django就會(huì)提交該事務(wù)。否則,Django會(huì)回滾該事務(wù)。
“ORM中的鎖與事務(wù)介紹”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!
名稱欄目:ORM中的鎖與事務(wù)介紹
文章網(wǎng)址:http://jinyejixie.com/article8/jdopop.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供全網(wǎng)營(yíng)銷推廣、外貿(mào)建站、網(wǎng)站導(dǎo)航、軟件開(kāi)發(fā)、網(wǎng)站營(yíng)銷、做網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)