前言
創新互聯公司長期為數千家客戶提供的網站建設服務,團隊從業經驗10年,關注不同地域、不同群體,并針對不同對象提供差異化的產品和服務;打造開放共贏平臺,與合作伙伴共同營造健康的互聯網生態環境。為郾城企業提供專業的網站制作、做網站,郾城網站改版等技術服務。擁有十多年豐富建站經驗和眾多成功案例,為您定制開發。從前面已經知道, 一個 request 的到來和一個對應 response 的返回的流程, 數據處理和數據庫離不開. 我們也經常在 views.py 的函數定義中與數據庫打交道.
django ORM 源代碼組織結構
對于數據庫, django 有自己的一套 ORM(對象關系映射), 或許其他的框架可以隨意更換 ORM, 但 django 不建議這么做. 因為 django 內置有很多的 model, 這些 model 無疑是用 django 內置 ORM 實現的, 如果更換后, 內置的 model 就無效了, 除非以下兩個選擇:
你已經吃透了 django 的 ORM, 定制自己的 ORM, 但必須用里面的規則, 比如類的屬性名等等;
又或者更換自己的 ORM, 不使用 django 內置的 model.
django 是一個大而全的框架, 但大而全卻又增加了它本身的負擔, 使其靈活性大大降低. 所以你看, 高內聚低耦合不容易做到.
數據庫本身的復雜的, 數據庫操作涉及的選項有很多, 一個 ORM 也并不簡單. django 數據庫部分在 django.db 中實現, 在展開之前先介紹一下它的源代碼文件組織:
django.db ----backends 各種數據庫后端實現 ----dummy 啞后端, 什么都不做, 定義空方法 ----mysql mysql 實現 ----oracle oracle 實現 ----..... ----models 重頭戲, backends 中各種數據庫都是基于此實現的 ----fields 數據庫表字段實現 ----..... ----sql 語句, 記錄 sql 語句的各種選項, where 等, 最后生成 sql 語句; 連接數據庫得到結果 ----..... ----aggregates.py 聚合相關 ----base.py 定義 Model 類 ----constants.py 一些常量 ----deletion.py 數據庫表項的刪除實現 ----expressions.py 表達式類, where 會出現表達式 ----loading.py ----manager.py ORM 的管理器 ----options.py 數據庫表選項, 譬如主鍵等 ----query.py 數據庫查詢集類 ----query_utils.py 小工具 ----related.py 與`表關聯`相關 ----signals.py ----__init__.py
新聞標題:Django對象關系映射(ORM)源碼詳解-創新互聯
文章URL:http://m.newbst.com/article46/dcddhg.html
成都網站建設公司_創新互聯,為您提供App開發、網站設計公司、關鍵詞優化、ChatGPT、網頁設計公司、網站設計
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯