首頁  >  文章  >  後端開發  >  Python中的ORM框架Peewee詳解

Python中的ORM框架Peewee詳解

王林
王林原創
2023-06-10 10:57:142710瀏覽

Python中的ORM框架Peewee詳解

ORM(物件關係映射)是一種將物件與關聯式資料庫之間進行映射的技術。本文將介紹一個Python中的ORM框架Peewee。 Peewee是一個輕量級、易用、靈活的ORM框架,支援SQLite、MySQL、PostgreSQL等多種資料庫。本文將介紹Peewee的安裝、基本用法、進階用法以及與其他ORM框架的比較。

  1. 安裝Peewee

Peewee可以透過pip安裝。在終端機中輸入以下指令即可安裝:

pip install peewee
  1. 基本用法

#(1)資料庫連線

在使用Peewee前,需要先進行資料庫連線。下面的程式碼展示如何透過Peewee連接SQLite資料庫:

from peewee import *

db = SqliteDatabase('my_database.db')

其中,my_database.db為SQLite資料庫的名稱,如果該資料庫檔案不存在,則會在目前目錄下建立該檔案。

Peewee也支援MySQL、PostgreSQL等資料庫,只需要將SqliteDatabase替換為對應的資料庫。例如,下面的程式碼展示如何透過Peewee連接MySQL資料庫:

db = MySQLDatabase('my_database', user='my_user', password='my_password', host='my_host', port=3306)

(2)定義模型

Peewee使用模型來描述資料庫中的表。每一個模型代表一張表,每個屬性則代表表中的一個欄位。下面的程式碼定義了一個模型User,其中包含id和name兩個欄位:

class User(Model):
    id = AutoField(primary_key=True)
    name = CharField()

    class Meta:
        database = db

其中,AutoField代表自增主鍵,primary_key=True表示該欄位為主鍵,CharField代表字串型別。

(3)建立表格

在定義完模型之後,需要對應的資料庫中建立對應的表。 Peewee提供了create_table方法來建立表,程式碼如下:

User.create_table()

(4)插入資料

Peewee提供了save方法來將資料插入資料庫。下面的程式碼插入了一條資料:

user = User(name='张三')
user.save()

(5)查詢資料

Peewee提供了get和select方法來查詢資料。其中,get方法用於查詢單一數據,select方法用於查詢多個數據。下面的程式碼查詢了所有名字為張三的使用者:

users = User.select().where(User.name == '张三')
for user in users:
    print(user.id, user.name)
  1. 進階用法

(1)關聯查詢

Peewee支援外鍵關聯查詢。下面的程式碼定義了一個模型Order,其中包含id、user和product三個欄位:

class Order(Model):
    id = AutoField(primary_key=True)
    user = ForeignKeyField(User, backref='orders')
    product = CharField()

    class Meta:
        database = db

其中,ForeignKeyField代表外鍵,backref='orders'表示透過User.orders可以存取到該使用者的所有訂單。

可以透過join方法進行關聯查詢,如下所示:

orders = Order.select().join(User).where(User.name == '张三')
for order in orders:
    print(order.id, order.user.name, order.product)

(2)事務操作

Peewee支援事務操作。可以將多個對資料庫的操作封裝在with db.atomic()中,程式碼如下:

with db.atomic() as txn:
    user1 = User(name='张三')
    user1.save()
    user2 = User(name='李四')
    user2.save()
    for i in range(10):
        order = Order(user=user1, product='product_' + str(i))
        order.save()
        order = Order(user=user2, product='product_' + str(i))
        order.save()
  1. 與其他ORM框架的比較

與Django自帶的ORM框架相比,Peewee更加輕量級,使用也更加靈活。與SQLAlchemy相比,Peewee的語法更加簡潔明了,同時也提供了許多方便的高階用法。

總之,Peewee是一個值得推薦的Python ORM框架,由於其靈活和易用,它在許多專案中也被廣泛使用。

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

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