最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

Python的ORM選擇之Pony還是SQLAlchemy?

2023-04-28 10:25 作者:寶寶龍的爸爸  | 我要投稿


編程本身就是對數(shù)據(jù)的處理。ORM是學(xué)習(xí)開發(fā)繞不過去的坎兒,今天我們就來聊聊在python的orm框架中,面對Pony和Sqlalchemy該如何選擇。我最早學(xué)習(xí)的框架是django,那時候還是1.x系列主流。感覺django和它的orm的設(shè)計理念非常nice,但問題也很明顯:深度綁定,單獨使用很難。后來逐漸接觸到其他的orm框架,比如 peewee,pony, sqlalchemy.其中,能夠提供和django同樣豐富功能的目前看來只有sqlalchemy,幾乎你能想到的它都準(zhǔn)備好了或者只需要簡單的封裝就能實現(xiàn)。django的orm和sqlalchemy都是相對重型的orm框架。你可以把sqlalchemy看作能獨立使用django的orm也可以。peewee和pony都是相對輕型的ORM框架。

????我自己的orm的學(xué)習(xí)路線是 django-orm-->sqlalchemy -->?peewee-->?pony-->pony + sqlalchemy.目前是sqlalchemy和pony并用,根據(jù)開發(fā)場景做選擇。這中間四次轉(zhuǎn)向?qū)W習(xí)的動機如下:

  • 從django-rom到sqlalchemy: 尋找一款無需和django綁定的django-orm的替代品。

  • 從sqlalchemy 到 peewee :?sqlalchemy 太繁瑣了。想少敲一些代碼。我需要一款sqlalchemy的輕量化替代品。

  • 從peewee到pony:?peewee的設(shè)計有一些我不喜歡的地方,特別是在復(fù)雜的關(guān)系表上的。而且我厭倦了無窮盡的重復(fù)學(xué)習(xí)。我需要一款學(xué)習(xí)成本低輕量級ORM框架。

  • pony +?sqlalchemy 雙持: 相對sqlalchemy 的傳統(tǒng)設(shè)計思維,pony里面太多黑魔法了,在嵌入復(fù)雜異步框架,打包編譯和跨語言調(diào)用上容易出現(xiàn)兼容性問題。因此,在這些場景下,還是需要sqlalchemy 這個老大哥出來坐鎮(zhèn)。

四款orm我只有在pony和sqlchemy上面比較有經(jīng)驗,而前者比后者大概又多了5-6年的生產(chǎn)經(jīng)驗。所以我現(xiàn)在只能拿pony和sqlchemy做做比較


1. 學(xué)習(xí)成本

pony的優(yōu)勢非常明顯,需要的學(xué)習(xí)時間一般不到?sqlchemy 的十分之一,很多python方面有經(jīng)驗的人,可以在幾個小時內(nèi)完全熟練的使用。可以說目前能在生產(chǎn)環(huán)境大規(guī)模使用的orm里,pony是學(xué)習(xí)成本最低的框架。

2. 功能

在提供能的功能方面,2者相當(dāng),sqlchemy以微弱的優(yōu)勢領(lǐng)先,雖然 pony 功能比?sqlchemy 少,但某些功能的裁剪其實是刻意為之,比如pony沒有專門的批量修改的函數(shù)。你需要用其他的方法(比如直接調(diào)用sql)來實現(xiàn)。按照設(shè)計者的說法是:如果你需要頻繁的批量的修改和刪除操作,考慮一下你的數(shù)據(jù)模型設(shè)計上出了什么問題吧....不過也有持反對意見的,畢竟pony現(xiàn)在不再是商業(yè)化的pony,而是一個開源的產(chǎn)品,需要聽取社區(qū)的意見。

3.性能

理論上orm的性能和3個東西有關(guān):

  1. 驅(qū)動的性能

  2. orm的對sql語句的生成和優(yōu)化

  3. 使用者的技術(shù)

對于第一點,大家都一樣,使用的驅(qū)動直接決定了性能。

對于第二點,大家?guī)缀醵家粯?,畢竟都是成熟的產(chǎn)品,說到底都是sql語句的生成和執(zhí)行。玩不出來什么花頭。

第三點才是關(guān)鍵。你的水平如何,直接決定了最終表現(xiàn)出來的性能。


寫在結(jié)束

如果是新手,我會建議以pony開始。學(xué)習(xí)成本低,挫敗感少,幾乎不用學(xué)習(xí)新語法。

如果有一定經(jīng)驗且想提高開發(fā)效率的web開發(fā)者, 你可以試試pony,或許會讓你感到驚喜

如果你是一個qt開發(fā)者,我建議你選擇?sqlchemy , 這樣你會在打包成exe文件時少遇到很多問題。

Python的ORM選擇之Pony還是SQLAlchemy?的評論 (共 條)

分享到微博請遵守國家法律
海宁市| 桦南县| 江口县| 金坛市| 古丈县| 玛多县| 广丰县| 海林市| 浑源县| 确山县| 全椒县| 汶川县| 广丰县| 城固县| 汨罗市| 凌源市| 平南县| 四平市| 德格县| 嘉义市| 正阳县| 突泉县| 文化| 尼勒克县| 延安市| 宁海县| 师宗县| 伊吾县| 玉田县| 东方市| 凭祥市| 聂拉木县| 元阳县| 乌兰县| 衡阳市| 宽甸| 石嘴山市| 樟树市| 滦平县| 民县| 嘉定区|