Python數(shù)據(jù)庫(kù)編程
ORM-SQLAlchemy學(xué)習(xí)
一韵卤、ORM背景介紹
如果寫程序用pymysql和程序交互稠通,那是不是要寫原生sql語(yǔ)句钮科。如果進(jìn)行復(fù)雜的查詢,那sql語(yǔ)句就要進(jìn)行一點(diǎn)一點(diǎn)拼接彼乌,而且不太有重用性,擴(kuò)展不方便渊迁。而且寫的sql語(yǔ)句可能不高效慰照,導(dǎo)致程序運(yùn)行也變慢。
為了避免把sql語(yǔ)句寫死在代碼里琉朽,有沒有一種方法直接把原生sql封裝好了并且以你熟悉的方式操作毒租,像面向?qū)ο竽菢樱?/p>
orm(object relational mapping),就是對(duì)象映射關(guān)系程序,簡(jiǎn)單來說我們類似python這種面向?qū)ο蟮某绦騺碚f一切皆對(duì)象箱叁,但是我們使用的數(shù)據(jù)庫(kù)卻都是關(guān)系型的墅垮,為了保證一致的使用習(xí)慣惕医,通過orm將編程語(yǔ)言的對(duì)象模型和數(shù)據(jù)庫(kù)的關(guān)系模型建立映射關(guān)系,這樣我們?cè)谑褂镁幊陶Z(yǔ)言對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作的時(shí)候可以直接使用編程語(yǔ)言的對(duì)象模型進(jìn)行操作就可以了算色,而不用直接使用sql語(yǔ)言抬伺。
ORM 相當(dāng)于把數(shù)據(jù)庫(kù)也給你實(shí)例化了,在代碼操作mysql中級(jí)又加了orm這一層灾梦。
orm的優(yōu)點(diǎn):
隱藏了數(shù)據(jù)訪問細(xì)節(jié)峡钓,“封閉”的通用數(shù)據(jù)庫(kù)交互,ORM的核心若河。他使得我們的通用數(shù)據(jù)庫(kù)交互變得簡(jiǎn)單易行能岩,并且完全不用考慮該死的SQL語(yǔ)句∠舾#快速開發(fā)拉鹃,由此而來。
ORM使我們構(gòu)造固化數(shù)據(jù)結(jié)構(gòu)變得簡(jiǎn)單易行统锤。
缺點(diǎn):
無可避免的毛俏,自動(dòng)化意味著映射和關(guān)聯(lián)管理,代價(jià)是犧牲性能(早期饲窿,這是所有不喜歡ORM人的共同點(diǎn))』涂埽現(xiàn)在的各種ORM框架都在嘗試使用各種方法來減輕這塊(LazyLoad,Cache)逾雄,效果還是很顯著的阀溶。