本篇內容介紹了“ORM中的鎖與事務介紹”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

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