python下申明式的對象關係DB映射器--Pony

來源:互聯網
上載者:User

標籤:

 

之前看到了Sails.js的waterline提供了聲明式的關係型對象與DB的映射器,驚為天人,可以說是極大地提升了效率。

利用waterline的對象關聯式模式,使用者可以直接使用javascript語言定義關係型的資料庫,也就是說,我們不再需要像在java環境中那樣聲明一個個model,然後具體的關係操作還需要使用者在商務邏輯中代碼處理,而是提供了關係型的申明方式來建立model,支援one way relation, one-one relation, one-many relation, many-many relation。其文法如下:

one way relation:

#myApp/api/models/pet.jsmodule.exports = {    attributes: {        name:‘STRING‘,        color:‘STRING‘    }}
#myApp/api/models/user.jsmodule.exports = {    attributes: {        name:‘STRING‘,        age:‘INTEGER‘,        pony:{            model: ‘pet‘        }    }}

one-many relation:

#myApp/api/models/pet.jsmodule.exports = {    attributes: {        name:‘STRING‘,        color:‘STRING‘,        owner:{            model:‘user‘        }    }}#myApp/api/models/user.jsmodule.exports = {    attributes: {        name:‘STRING‘,        age:‘INTEGER‘,        pets:{            collection: ‘pet‘,            via: ‘owner‘        }    }}

還有 many-many relation:

#myApp/api/models/pet.jsmodule.exports = {    attributes: {        name:‘STRING‘,        color:‘STRING‘,        // Add a reference to User        owners: {            collection: ‘user‘,            via: ‘pets‘,            dominant:true        }    }}#myApp/api/models/user.jsmodule.exports = {    attributes: {        name:‘STRING‘,        age:‘INTEGER‘,        // Add a reference to Pet        pets:{            collection: ‘pet‘,            via: ‘owners‘        }    }}

可以看到,所有的資料庫關係都通過了對象model定義好了,同時還支援流水線式(waterline)的操作方式:

User.find().populate(‘pets‘).exec(function(err,r){console.log(r[0].toJSON())});//以下為返回的json{ pets:    [ { name: ‘Pinkie Pie‘,       color: ‘pink‘,       id: 2,       createdAt: Tue Feb 11 2014 17:58:04 GMT-0600 (CST),       updatedAt: Tue Feb 11 2014 17:58:04 GMT-0600 (CST),       owner: 1 },     { name: ‘Applejack‘,       color: ‘orange‘,       id: 4,       createdAt: Tue Feb 11 2014 18:02:58 GMT-0600 (CST),       updatedAt: Tue Feb 11 2014 18:02:58 GMT-0600 (CST),       owner: 1 } ],  name: ‘Mike‘,  age: 21,  createdAt: Tue Feb 11 2014 17:49:04 GMT-0600 (CST),  updatedAt: Tue Feb 11 2014 17:49:04 GMT-0600 (CST),  id: 1 }

 

眼見著javascript生態環境一片欣欣向榮,不得不感歎我大python卻無如此激情洋溢的架構,不禁扼腕。於是打算自己開創一個,卻由於水平和時間所限,至今任然沒開始動工,只是開了個repo在github。

今天偶然發現了一個python的package,名叫Pony,其功能與waterline相當,而且整個生態環境更加友好,還提供了UI工具供開發人員使用。

 

 

 

參考:

1. Pony ORM官網:http://ponyorm.com/

2. Pony Demo:  http://www.blog.pythonlibrary.org/2014/07/21/python-101-an-intro-to-pony-orm/

3. Pony github: https://github.com/ponyorm/pony

4. Pony Docs: http://doc.ponyorm.com/

5. Pony Editor: https://editor.ponyorm.com/

 

python下申明式的對象關係DB映射器--Pony

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.