Python による ORM フレームワーク Peewee の詳細説明
ORM (Object Relational Mapping) は、オブジェクトをリレーショナル データベースにマッピングする技術です。この記事では、Python の ORM フレームワークである Peewee を紹介します。 Peewee は、SQLite、MySQL、PostgreSQL などの複数のデータベースをサポートする、軽量で使いやすい柔軟な ORM フレームワークです。この記事では、Peeweeeのインストール、基本的な使い方、高度な使い方、他のORMフレームワークとの比較を紹介します。
Peewee は pip を通じてインストールできます。ターミナルに次のコマンドを入力してインストールします。
pip install peewee
(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) 関連クエリ
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()
Django 独自の比較ORM フレームワークを使用すると、Peewee はより軽量になり、より柔軟に使用できるようになります。 SQLAlchemy と比較して、Peewee の構文はより簡潔かつ明確であり、多くの便利な高度な使用法も提供します。
つまり、Peeweee は推奨される Python ORM フレームワークであり、その柔軟性と使いやすさにより、多くのプロジェクトでも広く使用されています。
以上がPythonによるORMフレームワークPeeweeeの詳細説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。