ホームページ  >  記事  >  バックエンド開発  >  PythonによるORMフレームワークPeeweeeの詳細説明

PythonによるORMフレームワークPeeweeeの詳細説明

王林
王林オリジナル
2023-06-10 10:57:142688ブラウズ

Python による ORM フレームワーク Peewee の詳細説明

ORM (Object Relational Mapping) は、オブジェクトをリレーショナル データベースにマッピングする技術です。この記事では、Python の ORM フレームワークである Peewee を紹介します。 Peewee は、SQLite、MySQL、PostgreSQL などの複数のデータベースをサポートする、軽量で使いやすい柔軟な ORM フレームワークです。この記事では、Peeweeeのインストール、基本的な使い方、高度な使い方、他の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 は、モデルを使用してデータベース内のテーブルを記述します。各モデルはテーブルを表し、各属性はテーブル内のフィールドを表します。次のコードは、id と name の 2 つのフィールドを含むモデル User を定義します:

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 メソッドは複数のデータをクエリする場合に使用されます。次のコードは、Zhang San という名前のすべてのユーザーをクエリします。

users = User.select().where(User.name == '张三')
for user in users:
    print(user.id, user.name)
  1. 高度な使用法

(1) 関連クエリ

Peewee は外部キーの関連付けをサポートしています。次のコードは、モデル Order を定義します。これには、id、user、product の 3 つのフィールドが含まれます。

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 はトランザクション操作をサポートしています。データベースに対する複数の操作は 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 の構文はより簡潔かつ明確であり、多くの便利な高度な使用法も提供します。

つまり、Peeweee は推奨される Python ORM フレームワークであり、その柔軟性と使いやすさにより、多くのプロジェクトでも広く使用されています。

以上がPythonによるORMフレームワークPeeweeeの詳細説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。