1. 程式人生 > >Python ORM框架Pony —— 什麼是Pony ORM?

Python ORM框架Pony —— 什麼是Pony ORM?

Pony是一種高階的物件關係對映器。ORM允許開發人員以物件的形式處理資料庫的內容。關係資料庫包含儲存在表中的行。但是,當使用高階面嚮物件語言編寫程式時,可以以物件的形式訪問從資料庫檢索的資料,這樣十分方便。Pony ORM是一個Python語言庫,允許您方便地處理在關係資料庫中儲存為行的物件。

在Python中實現了其他常用的的對映器,如Django和SQLAlchemy,但是Pony的優勢在於:

  • 可以編寫非常方便的查詢語法
  • 自動化查詢的優化
  • N + 1問題的優雅解決方案
  • 線上資料庫模式編輯器

與Django相比,Pony提供:

  • 標識對映模式
  • 自動事務管理
  • 自動快取查詢和物件
  • 完全支援複合鍵
  • 使用LEFT JOIN,HAVING和SQL的其他功能輕鬆編寫查詢的能力

Pony有一個有趣的特性,它允許使用生成器表示式或lambda函式使用python的語法與資料庫進行互動,然後將其轉換為SQL。即使不是資料庫專家,這些查詢也可以由熟悉Python的開發人員輕鬆編寫。以下是使用生成器表示式語法的查詢示例:

select(c for c in Customer if sum(c.orders.total_price) > 1000)

這是使用lambda函式編寫的相同查詢:

Customer.select(lambda c: sum(c.orders.total_price) > 1000)

在此查詢中,我們檢索總購買量超過1000的所有客戶。對資料庫的查詢以Python生成器表示式的語法進行編寫,並作為引數傳遞給select()函式,而Pony不同的是Pony不執行此生成器,而是將其轉換為SQL語句,然後傳送到資料庫。使用這種方法,任何開發人員都可以編寫資料庫查詢而無需SQL專家。

Customer是一個實體類,最初在建立應用程式時進行描述,並連結到資料庫中的表。

並非每個ORM(物件關係對映器)都提供這種方便的查詢語法。除了易於使用之外,Pony還可確保高效地處理資料。查詢被轉換為快速且可執行的SQL語句。根據DBMS(資料庫管理系統),生成SQL的語法可能會有所不同,以便使用所選資料庫的功能。無論DBMS如何,用Python編寫的查詢程式碼看起來都是一樣的,這確保了應用程式的可移植性。

使用Pony,任何開發人員都可以編寫複雜而有效的查詢,即使不是SQL專家也是如此。與此同時,Pony不與SQL“fight” - 如果開發人員需要在原始SQL中編寫查詢,例如呼叫儲存過程,我們都可以輕鬆地使用Pony執行此操作。Pony ORM的主要目標是簡化Web應用程式的開發過程。

從版本0.7開始,Pony ORM是在Apache License 2.0版下發布的。

 

如果有需要學習Pony請點選這裡https://docs.ponyorm.com/index.html