自動化平臺開發小結(四)
今天對備份恢復和後設資料的功能點進行了改進,突然發現需要做的事情遠比想象的要多。
技術方面,目前Django的框架使用開始有一些需求的瓶頸了,因為有些需求從業務的角度來說,能夠實現是極好的,但是從Django的支援層面來說,有些需求要實現就比較糾結了,比如預設的User,如果想在已有的基礎上擴充套件,技術肯定能夠實現,但是就有不少需要注意的細節,折騰一圈,基本會是這樣的一個態度。
而且尤其讓我有些不得力的是ORM的API,對於增刪改查來說是足夠了,但是我要實現一些相對複雜的統計需求的時候,這種方式就很受限了,使用raw的方式吧,有些SQL可能會寫的比較長,而且查詢結果很可能不需要主鍵,會報出下面的錯誤:InvalidQuery: Raw query must include the primary key
所以在這個地方又開始糾結了,甚至於想到底還有沒有其他更好的ORM實現,
顯然是有的,比如SQL Alchemy,還有很多公司是自己定製的ORM.
但是話說回來,Django本身很全面,強大的社群支援是很顯然的。但是退一步來看,我們是否有更好或者Django也提供了一些定製的入口。
Django的流行可以參考這篇。
為什麼 Django 能持續統治 Python 開發世界
所以糾結貴糾結,Django的這些擴充套件支援是有的。比如我要實現一個複雜的查詢需求。可以使用如下的方式,這個是已有的ORM顯然支援不了的。
問題的背景是,有如下的備份檔案,大小有的標識是M,有的是G,如果想做資料的統計,基於不同的時間維度,那麼要做這件事情就需要做一些過濾了。
| aaa | 9.1G |
| bbb | 11G |
| ccc | 19G |
| ddd | 5.8M |
| eee | 5.7M |
所以我們完全可以使用自定義的方式來做,這個和很多ORM框架類似。
from django.db import connection
cursor = connection.cursor()
cursor.execute(
"SELECT truncate(sum( CASE WHEN RIGHT (backup_size, 1) = 'G' THEN CONCAT( BINARY ( substring( backup_size, 1, LENGTH(backup_size) - 1 ) ) * 1024, 'M' ) ELSE replace(backup_size,'M','') END),0) backup_size FROM test where date_format(backup_starttime,'%y-%m-%d')=date_sub(curdate(),interval 2 day) group by date_format(backup_starttime,'%y-%m-%d');");
total_size = cursor.fetchone()[0]
如此一來,我可以考慮寫一個DAO層,複雜的語句和查詢都可以透過這個入口來管控,而平常使用的增刪改查使用Django API足矣。
如此一來,我一直比較糾結的多對多的一些對映關係和定製也有了新的思路。
可能我就可以直接基於ORM來做一些深度的定製,而不完全依賴外來鍵關係。
明天繼續大搞一場,把剩下的功能搞定。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/23718752/viewspace-2152351/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 自動化平臺開發小結(六)
- 自動化平臺開發小結(五)
- 自動化平臺開發小結(三)
- 自動化平臺開發的幾點總結
- 自動化平臺的嘗試和小結
- 自動化平臺的幾個小計劃
- 自動化測試平臺
- UI 自動化測試平臺UI
- 未來營銷自動化平臺的四大特點
- iOS 元件化開發(四):fastlane實現pod自動化iOS元件化AST
- 數字貨幣交易平臺開發,虛擬幣自動搬磚量化交易平臺開發
- Django 介面自動化測試平臺Django
- 直播平臺開發,動態文字輸出,文字自動輸出
- 開源免費的自動化測試平臺推薦
- 短視訊平臺開發,在上傳圖片時,自動新增平臺的水印
- 物流平臺如何與電商平臺進行自動化流程管理
- 活動運營自動化平臺實踐
- 如何使用瀏覽器自動化框架Playwright開發“萬媒易發”實現多平臺自動釋出文章?瀏覽器框架
- 手把手教你基於 JMeter 開發一個自動化測試平臺 (1)JMeter
- 手把手教你基於 JMeter 開發一個自動化測試平臺 (2)JMeter
- 從業務測試需求痛點到自動化測試平臺設計開發
- 直播平臺軟體開發,flutter Wrap 自動換行元件Flutter元件
- 直播平臺開發,操作成功後自動返回首頁
- 自動化測試工具縮小開發和交付差距
- 移動 Web 開發問題和優化小結Web優化
- 移動端開發小結
- 微信公眾平臺開發(四) 簡單回覆功能開發
- 求一個開源的自動化測試平臺 最好是 vue+python 開發的VuePython
- 雷神 Thor —— TiDB 自動化運維平臺TiDB運維
- 自動化運維平臺的流程草圖運維
- 無人值守自動化效能測試平臺
- 使用Kubernetes 構建自動化平臺
- 量化搬磚交易平臺搭建,自動對沖系統開發
- 用Nuxt express element 開發自動部署管理平臺 node auto deployUXExpress
- 直播平臺軟體開發,Extjs Grid自動換行JS
- LeaRun.Java快速開發平臺 高效程式碼自動化生成Java
- 直播電商平臺開發,Android | 圖片縮放、自動居中Android
- API自動化測試平臺,高效實現對API的自動化測試API