成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Peewee, 一個(gè)神奇的 Python 庫(kù)

開發(fā)
Peewee? 以簡(jiǎn)潔的 API? 設(shè)計(jì)著稱,代碼量通常比 SQLAlchemy 少 30%-50%,適合追求開發(fā)效率的場(chǎng)景。

Peewee 是一個(gè)簡(jiǎn)單小巧的 ORM,它的概念簡(jiǎn)潔明了,易于學(xué)習(xí)和使用。能夠與 SQLite、MySQL、MariaDB、PostgreSQL 等多種數(shù)據(jù)庫(kù)協(xié)同工作,擁有豐富的擴(kuò)展功能。

1. 資料

  • 官網(wǎng): https://docs.peewee-orm.com/
  • 源代碼:https://github.com/coleifer/peewee

2. 安裝

pip install Peewee

3. 特點(diǎn)

使用過Python的都知道,SQLAlchemy 幾乎已經(jīng)是 Python 中的標(biāo)準(zhǔn) ORM 框架了,功能強(qiáng)大,為什么還要使用Peewee呢?

Peewee 設(shè)計(jì)更為簡(jiǎn)潔,其 API 簡(jiǎn)單直觀,學(xué)習(xí)曲線平緩,新手能快速上手, 在一些簡(jiǎn)單項(xiàng)目中,其輕量級(jí)的特點(diǎn)能使項(xiàng)目結(jié)構(gòu)更清晰,開發(fā)效率更高。

核心特點(diǎn)如下:

  • 輕量級(jí):?jiǎn)挝募?shí)現(xiàn),無復(fù)雜依賴
  • 支持?jǐn)?shù)據(jù)庫(kù):多種數(shù)據(jù)庫(kù)支持
  • 鏈?zhǔn)讲樵儯侯愃?Django ORM 的流暢 API
  • 事務(wù)管理:簡(jiǎn)單的事務(wù)和原子操作
  • 擴(kuò)展性:支持自定義字段、連接池、分片等

4. 快速上手

(1) 定義模型

通過定義類來創(chuàng)建模型,類的屬性對(duì)應(yīng)數(shù)據(jù)庫(kù)表中的字段。

from peewee import *

db = SqliteDatabase('my_app.db')  # 使用 SQLite

class User(Model):
    name = CharField()
    age = IntegerField()
    is_admin = BooleanField(default=False)

    class Meta:
        database = db  # 綁定數(shù)據(jù)庫(kù)

db.connect()
db.create_tables([User])  # 創(chuàng)建表

(2) 增刪改查(CURD)操作

# 創(chuàng)建數(shù)據(jù)
admin = User.create(name="Alice", age=30, is_admin=True)
user = User(name="Bob", age=25)
user.save()

# 查詢數(shù)據(jù)
admins = User.select().where(User.is_admin == True)
for u in admins:
    print(u.name, u.age)

# 更新數(shù)據(jù)
User.update(age=31).where(User.name == "Alice").execute()

# 刪除數(shù)據(jù)
User.delete().where(User.name == "Bob").execute()

(3) 復(fù)雜查詢

支持鏈?zhǔn)讲樵兗熬酆喜樵?/p>

# 鏈?zhǔn)讲樵?users = (User
         .select()
         .where((User.age > 20) & (User.is_admin == False))
         .order_by(User.age.desc())
         .limit(5))
for user in users:
    print(user.name, user.age)
    
# 聚合查詢
count = User.select(fn.COUNT(User.id)).scalar()
avg_age = User.select(fn.AVG(User.age)).scalar()
print(count, avg_age)

輸出內(nèi)容如下:

Bob 25
2 28.0

5. 高級(jí)功能

(1) 事務(wù)管理

with db.atomic():  # 原子事務(wù)
    User.create(name="Charlie", age=40)
    User.update(age=User.age + 1).execute()

(2) 關(guān)聯(lián)表

創(chuàng)建數(shù)據(jù)表post,關(guān)聯(lián)關(guān)系為has-many,一個(gè)用戶可以發(fā)布多個(gè)帖子。

class Post(Model):
    user = ForeignKeyField(User, backref='posts')
    content = TextField()

    class Meta:
        database = db  # 綁定數(shù)據(jù)庫(kù)

# 查詢用戶的所有推文
alice_posts = User.get(name="Alice").posts

for post in alice_posts:
    print(post.content)

(3) 自定義字段

class UUIDField(CharField):
    def db_value(self, uuid_obj):
        return str(uuid_obj)  # 存入數(shù)據(jù)庫(kù)時(shí)轉(zhuǎn)換
    
    def python_value(self, db_str):
        return uuid.UUID(db_str)  # 從數(shù)據(jù)庫(kù)讀取時(shí)轉(zhuǎn)換

(4) 性能優(yōu)化

N+1 查詢問題:使用 prefetch() 預(yù)加載關(guān)聯(lián)數(shù)據(jù)

users = User.select().prefetch(Tweet)  # 一次加載所有關(guān)聯(lián)推文

批量插入:

with db.atomic():
    User.insert_many([
        {'name': 'Dave', 'age': 28},
        {'name': 'Eve', 'age': 32}
    ]).execute()

6. 總結(jié)

Peewee 以簡(jiǎn)潔的 API 設(shè)計(jì)著稱,代碼量通常比 SQLAlchemy 少 30%-50%,適合追求開發(fā)效率的場(chǎng)景:

  • 適用場(chǎng)景:中小項(xiàng)目快速開發(fā)、原型設(shè)計(jì)、腳本數(shù)據(jù)處理
  • 慎用場(chǎng)景:超大規(guī)模系統(tǒng)、需要復(fù)雜連接查詢、異步需求強(qiáng)烈
責(zé)任編輯:趙寧寧 來源: 程序員老朱
相關(guān)推薦

2025-06-09 10:15:00

FastAPIPython庫(kù)

2025-06-05 08:10:00

PyneconePythonWeb 應(yīng)用

2025-05-27 08:00:00

Pythonemoji庫(kù)

2025-05-29 10:00:00

ZODBPython數(shù)據(jù)庫(kù)

2025-06-04 10:05:00

Gooey開源Python

2025-06-10 08:00:00

Pygalpython庫(kù)

2025-06-09 07:25:00

filelock庫(kù)數(shù)據(jù)庫(kù)

2025-06-05 10:00:00

GensimPython庫(kù)

2024-04-01 05:00:00

GUIpythonDearPyGui

2025-05-28 08:00:00

Pythonpython-jos開發(fā)

2025-06-03 10:00:00

LiteLLMPython庫(kù)

2025-06-03 08:30:00

PotteryRedisPython

2014-04-23 11:11:27

Linux下載管理器uGet

2020-06-08 07:52:31

Python開發(fā)工具

2023-01-16 18:16:49

CinnamonLinux桌面環(huán)境

2011-11-02 12:38:12

華為華為ARG3

2023-11-28 14:22:54

Python音頻

2022-07-21 09:50:20

Python日期庫(kù)pendulum

2024-07-02 11:29:28

Typer庫(kù)Python命令

2021-05-19 22:23:56

PythonJavaScript數(shù)據(jù)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 国产成人精品一区二区三区 | 一区二区精品在线 | 九九热这里 | 国产成人艳妇aa视频在线 | 成人影院在线 | www日本在线观看 | 九九色九九 | 欧美v在线观看 | 欧美1区| 国产在线1区| 天天爽夜夜爽精品视频婷婷 | 国产精品一区久久久 | 少妇精品亚洲一区二区成人 | 国产欧美一区二区三区日本久久久 | 成人国产精品免费观看 | 四虎成人av| 国产一区二区三区四区在线观看 | 亚洲精品一区二区三区在线观看 | 国产 欧美 日韩 一区 | 99在线精品视频 | 精品免费视频一区二区 | 性国产丰满麻豆videosex | 九色porny自拍视频 | 国产日韩精品在线 | 蜜臀久久99精品久久久久久宅男 | 中文在线一区二区 | 日韩喷潮| 夜夜操av| 久久精品国产一区二区三区不卡 | 亚洲精品一区二区三区四区高清 | 国产性色视频 | 成年人视频在线免费观看 | 免费高潮视频95在线观看网站 | 国产欧美精品 | www.av在线| 国产精品久久久久久一区二区三区 | 欧美在线一区二区三区 | 欧美日韩国产一区二区 | 久久久久一区 | 国产精品久久久久久一区二区三区 | 日本精品免费 |