專案裡該不該用ORM?

時間 2021-05-29 22:23:01

1樓:kan tmac

通常情況下ORM可以carry一般的SQL需求,並且開發節省時間。

但是複雜的SQL,實在是看了SqlChemy文件也不知道怎麼更好的使用,不一定能滿足需求,

所以乾脆手寫SQL了

需要注意的是不要把所有的SQL結果一次載入到記憶體等。。。

一點經驗

2樓:祝賀

看個人習慣,ORM有好處也有壞處,對於要求效能不高,業務不複雜的用用還行。個人認為沒有用SQL靈活。遇到複雜統計查詢要是不用SQL,用ORM你就能體會到痛苦了。

有的統計SQL都能寫一大篇了,用ORM就可想而知了。但是大多數專案業務都不複雜,是所謂簡單的CRUD用ORM沒有問題的。

3樓:才本程程

這個月剛做的專案,現場部署的時候,資料量一大,sqlalchemy直接垮了,現場部署的等著,我們遠端改sqlalchemy查詢為sql。坑大發了。不過不存在短時間內大量請求的場景的話,也還好,之前開發的時候就是因為沒模擬大量請求進行測試,沒發現這個問題。

所以,根據不同的情況來選吧,我們之後決定用sqlalchemy做管理,但是操作的話可能要自己封裝sql語句了。

4樓:王青風

可以看下這個, 輕量的, 無需建模型

GitHub - zii/lorm: A light weight python ORM without models.

5樓:不知所云111

我覺得稍微大一點的專案,都要用,業務模型一複雜起來,如果隨便修改乙個東西,我要修改很多處的話,很容易出錯。

效率問題,sqlalchemy已經為我們做到很好很好了,比我們很多人手寫的sql效率都要高。如果確實擔心效率問題,你完全可以在常用介面,手寫sql,其他還是用orm。

至於上面所說的,網際網路公司不用,更是扯淡。網際網路公司的產品迭代非常快,改動比較多,要是有200個介面,全是用sql寫,你很容易就會出錯。

我目前用flask框架作為http前端,sqlalchemy做orm,twisted用作tcp伺服器,twisted方面,基本只訪問redis,就是以為twisted本身自帶的dbpool基本都手寫sql,業務模型稍微一修改,sql語句都要找半天,真是浪費時間。

還有上面說的,多個資料庫,或者讀寫分離的,拜託,大哥,這個問題sqlalchemy不知道哪年就解決了。

還有快取問題,我現在基本都用redis作為快取,基礎資料redis裡放乙份,sql裡面放乙份,同時更改。常用查詢,完全可以自己做乙個快取,這個很難嗎?

6樓:

這個其實挺複雜。就像Python到底要不要非同步一樣:)小專案簡單指令碼上ORM會費事,所以並不建議。

大一點的專案或者變化較快的專案ORM是乙個好東西,可以讓開發更加高效。

再大一些,需要考慮效能時,手寫SQL是必須的,尤其是某些場景ORM會帶來額外效能消耗,這時一般資料結構變化可能性小了很多,手寫SQL會帶來一些效能優化,可以考慮。

7樓:李在田

一開始決定不用ORM的,最終都被逼得自己重新造了個蹩腳的ORM輪子;

一開始決定使用ORM的,最終都被逼得繞開ORM自己挽起袖子裸寫SQL。藥丸!

8樓:Vincent Zhang

寫查詢的過程應該是:

先想執行計畫,再翻譯成sql。如果用orm還得再翻譯成orm的查詢語句,多麻煩。。。

而不是:

我就告訴orm我要存啥類,orm你去給我建表。我就告訴orm我要查啥物件,orm你去給我生成sql。至於sql生成啥執行計畫,我不管。。。

用現有orm絕對是件得不償失的事情。不僅喪失了native sql的靈活性,而且常常引入額外bug和效能問題。

針對每乙個專案,都制定乙份專用的orm倒是個不錯的辦法~

最後,想要精通某一現有orm,學習成本並不比直接學好native sql低,用native sql還可以自己控制索引,約束,鎖,多好。。。

9樓:agile zhou

存在大量的CRUD操作的時候可以用一用現成的orm工具,減少重複的勞動,反之只需簡單的封裝下資料訪問跟模型足已。

以我的經驗網際網路專案一般不適合使用orm,比如ef,坑多,等你填完,我手寫幾句sql早就搞定了,效能更好,有問題定位起來也快,優化思路也更清晰。還有乙個問題是出報表的時候複雜查詢,各種行列轉換,分組合併直接寫sql來的更直接,效能更好…

10樓:小蝶驚鴻

看你需求咯,簡單的SQL查詢愛咋用咋用,SQL語句一複雜起來,你會發現還是自己寫來得可靠。

此外,補充下 @you conquer 說的那個缺點,現在的ORM基本上已經算是登峰造極,基本上不會因為壓模型而導致多少效能消耗,真正的效能消耗來自於它生成了乙個屎一樣的SQL使得資料庫執行時消耗大量時間。這也就算為啥SQL一複雜起來還不如手寫的原因。

11樓:馮rick

為啥不用呢?個人覺得spring jdbc也挺好,可以看看這篇文章:

基於spring jdbc的輕量級ORM-SBORM介紹

12樓:ershou

大的專案還是推薦ORM。如果你裸寫SQL,隨著業務和人員的增加你也會試著封裝與DB連線的模組,那麼恭喜你,你自己寫了乙個ORM。

13樓:

使用 ORM 的好處:

1. 避免裸寫 SQL 語句,乙個是看起來簡潔,另乙個是借助 ORM 框架防止 SQL 注入

2. 將 Data 抽象為 Object,由此可以融入現有的 OO 程式設計方法

缺點:1. 據說 ORM 效能不行

不過以我自身的姿勢水平,還沒到考慮 ORM 對效能消耗的地步,另外從周圍前輩們的經驗來看,基本也都推薦使用 ORM 作為最佳實踐

到底該不該用粉刺針?

王傑 粉刺針什麼的我是徹底被我女朋友整怕了!我長黑頭的那會兒,可把我女朋友給急壞了,整天拿著這個針給我去黑頭,你說你去就去吧,關鍵你這都不會,每次都給我鼻子扎的千瘡百孔 無處伸冤啊 太煎熬了,她真的是敢整各種各樣的東西給我用,最奇葩的是用什麼雞蛋清,做飯的鹽,刷牙的藥膏啥的,這都是啥呀,這也太離譜了...

安撫奶嘴到底該不該用?

JK珺珺珺 吮吸是寶寶的天性,只要我們的奶嘴用對了,妥妥的育兒神器。用安撫奶嘴對牙齒無影響,那寶寶在吸吮的時候,這個安撫奶嘴外面的這個圓片,它會有乙個反作用力的。就可以避免我們寶寶的牙齦變形,那安撫奶嘴有什麼用。它主要是在寶寶哭鬧的時候,解放媽媽雙手,還能夠幫助寶寶去戒掉吃手,避免寶寶因為吃手而造成...

該不該用男朋友的錢?

Dieliars 可以用,但是心中要有數。要記得用差不多價值的其他方式回饋對方。用錢的時候也要想著別人的錢也不容易,不是風颳來的。一些數目大的錢要講清楚是你要用還是借,用的話是憑感情,借的話要記得之後還回去。不管借多久都一定要還。女生也要懂得給男生花錢,並不是只有女生需要對方用或多或少的經濟付出來體...