首頁 後端開發 Python教學 Python中的ORM框架Pony ORM詳解

Python中的ORM框架Pony ORM詳解

Jun 10, 2023 pm 09:30 PM
python orm框架 pony orm

Python是一種高階程式語言,被廣泛使用於Web開發、科學計算、資料處理等領域。在Python開發中,ORM(Object-Relational Mapping)框架是一個重要的元件,它可以將關係型資料庫和物件導向程式語言之間建立起連貫的橋樑,方便了Python程式設計師的開發工作。

在眾多Python ORM框架中,Pony ORM是一個輕量級的物件關係映射工具,它採用Python語言自然、簡單的語法,提供了豐富的功能,可以快速地將Python物件映射到關係型資料庫中實現持久化。

  1. 安裝

首先,我們需要透過pip套件管理工具進行安裝。

pip install pony

  1. 快速入門

2.1 連線資料庫

首先,我們需要連接一個資料庫,Pony ORM支援多種關係型資料庫,包括MySQL、PostgreSQL、SQLite、Oracle、MS SQL Server等。下面以SQLite為例。

from pony.orm import *

db = Database()

db.bind(provider='sqlite', filename='database.sqlite', create_db=True )

注意,在連接資料庫前,需要先定義一個Database實例,然後透過bind()方法指定資料庫類型和資料庫名稱。如果資料庫不存在,則可以使用create_db=True選項自動建立資料庫。

2.2 定義實體類別

接下來,我們需要定義一個Python類,並透過db.Entity()裝飾器將其轉換為實體類別。實體類別中的屬性會被對應為資料庫中的表格列,而實體類別的實例則對應於表格中的行。

class Customer(db.Entity):

name = Required(str)
age = Required(int)
address = Optional(str)
登入後複製

在上述程式碼中,我們定義了一個Customer實體類,並定義了三個屬性:name、age和address。其中,name和age為必須屬性(Required),而address為可選屬性(Optional)。

2.3 建立表格

建立實體類別後,我們需要在資料庫中建立對應的表格結構。這可以透過db.generate_mapping()方法來完成。

db.generate_mapping(create_tables=True)

經過上述步驟,我們已經成功地連接了資料庫,定義了一個實體類,並在資料庫中建立了對應的表格。

  1. 增刪改查

3.1 插入資料

插入資料是常見的操作。透過Pony ORM,我們可以很方便地實現插入資料。

with db_session:

c1 = Customer(name='Tom', age=20)
c2 = Customer(name='Jerry', age=25, address='New York')
flush()
登入後複製

在上述程式碼中,我們使用with db_session關鍵字聲明一個會話,然後透過實例化Customer實體類,建立了兩個Customer實例c1和c2,並將其賦值給變數。接著,我們呼叫flush()方法,將實例c1和c2插入到資料庫中。

3.2 查詢資料

查詢資料是ORM框架最常用的功能之一。透過Pony ORM,我們可以使用查詢表達式或ORM物件來實現查詢資料。

查詢表達式:

select(c for c in Customer if c.age > 20)

在上述程式碼中,我們使用select()函數指定要查詢的實體類別。這裡我們指定查詢Customer表中年齡大於20歲的記錄。最後,我們使用含有select()函數的with db_session上下文,執行查詢操作。

ORM物件:

with db_session:

customers = Customer.select(lambda c:c.age > 20)
for c in customers:
    print(c.name, c.age, c.address)
登入後複製

在上述程式碼中,我們使用with db_session關鍵字宣告一個會話,並使用Customer.select()查詢Customer表中年齡大於20歲的記錄。查詢結果以ORM物件表示,我們可以像Python物件一樣存取其中的屬性和方法。最後,我們使用for迴圈輸出查詢結果。

3.3 更新資料

更新資料的操作很簡單,我們只需要先查詢需要更新的記錄,然後修改對應的屬性值,最後呼叫flush()方法儲存修改後的數據即可。

with db_session:

customer = Customer.get(name='Tom')
customer.address = 'Beijing'
flush()
登入後複製

在上述程式碼中,我們使用Customer.get()語句查詢名為Tom的客戶記錄,然後將其位址修改為北京。最後,透過呼叫flush()方法,我們將更新後的資料儲存到資料庫中。

3.4 刪除資料

刪除資料也很簡單,我們只需要先查詢需要刪除的記錄,然後呼叫其delete()方法。

with db_session:

customer = Customer.get(name='Tom')
customer.delete()
登入後複製

在上述程式碼中,我們使用Customer.get()語句查詢名為Tom的客戶記錄,然後呼叫其delete()方法,從資料庫中刪除該記錄。

  1. 總結

Pony ORM是一種簡單、易用、功能豐富的Python ORM框架,可以快速地將Python物件映射到關係型資料庫中實現持久化。使用Pony ORM時,我們需要先連接資料庫,然後定義實體類,建立表格,最後透過查詢表達式或ORM物件實現增刪改查等操作。對於初學者而言,Pony ORM是一種非常友好的ORM框架,具有較低的學習成本,可以快速入門並開始使用。

以上是Python中的ORM框架Pony ORM詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1665
14
CakePHP 教程
1424
52
Laravel 教程
1322
25
PHP教程
1270
29
C# 教程
1249
24
PHP和Python:解釋了不同的範例 PHP和Python:解釋了不同的範例 Apr 18, 2025 am 12:26 AM

PHP主要是過程式編程,但也支持面向對象編程(OOP);Python支持多種範式,包括OOP、函數式和過程式編程。 PHP適合web開發,Python適用於多種應用,如數據分析和機器學習。

在PHP和Python之間進行選擇:指南 在PHP和Python之間進行選擇:指南 Apr 18, 2025 am 12:24 AM

PHP適合網頁開發和快速原型開發,Python適用於數據科學和機器學習。 1.PHP用於動態網頁開發,語法簡單,適合快速開發。 2.Python語法簡潔,適用於多領域,庫生態系統強大。

sublime怎麼運行代碼python sublime怎麼運行代碼python Apr 16, 2025 am 08:48 AM

在 Sublime Text 中運行 Python 代碼,需先安裝 Python 插件,再創建 .py 文件並編寫代碼,最後按 Ctrl B 運行代碼,輸出會在控制台中顯示。

Python vs. JavaScript:學習曲線和易用性 Python vs. JavaScript:學習曲線和易用性 Apr 16, 2025 am 12:12 AM

Python更適合初學者,學習曲線平緩,語法簡潔;JavaScript適合前端開發,學習曲線較陡,語法靈活。 1.Python語法直觀,適用於數據科學和後端開發。 2.JavaScript靈活,廣泛用於前端和服務器端編程。

PHP和Python:深入了解他們的歷史 PHP和Python:深入了解他們的歷史 Apr 18, 2025 am 12:25 AM

PHP起源於1994年,由RasmusLerdorf開發,最初用於跟踪網站訪問者,逐漸演變為服務器端腳本語言,廣泛應用於網頁開發。 Python由GuidovanRossum於1980年代末開發,1991年首次發布,強調代碼可讀性和簡潔性,適用於科學計算、數據分析等領域。

Golang vs. Python:性能和可伸縮性 Golang vs. Python:性能和可伸縮性 Apr 19, 2025 am 12:18 AM

Golang在性能和可擴展性方面優於Python。 1)Golang的編譯型特性和高效並發模型使其在高並發場景下表現出色。 2)Python作為解釋型語言,執行速度較慢,但通過工具如Cython可優化性能。

vscode在哪寫代碼 vscode在哪寫代碼 Apr 15, 2025 pm 09:54 PM

在 Visual Studio Code(VSCode)中編寫代碼簡單易行,只需安裝 VSCode、創建項目、選擇語言、創建文件、編寫代碼、保存並運行即可。 VSCode 的優點包括跨平台、免費開源、強大功能、擴展豐富,以及輕量快速。

notepad 怎麼運行python notepad 怎麼運行python Apr 16, 2025 pm 07:33 PM

在 Notepad 中運行 Python 代碼需要安裝 Python 可執行文件和 NppExec 插件。安裝 Python 並為其添加 PATH 後,在 NppExec 插件中配置命令為“python”、參數為“{CURRENT_DIRECTORY}{FILE_NAME}”,即可在 Notepad 中通過快捷鍵“F6”運行 Python 代碼。

See all articles