Peeweeでカスタムクエリと拡張を行う方法

PythonのPeeweeは、シンプルで強力なORM(Object Relational Mapping)ライブラリです。この記事では、Peeweeでのカスタムクエリと拡張について詳しく解説します。具体的なコード例、その解説、および応用例を含めています。

目次

はじめに

Peeweeは、Pythonプログラミングでデータベース操作を簡単に行うためのORMライブラリです。基本的なCRUD(Create, Read, Update, Delete)操作は非常に簡単に行えますが、独自のカスタムクエリや拡張も可能です。

基本的なカスタムクエリ

Peeweeでは、SQL文を直接書くことなくデータベース操作が可能ですが、特定の条件下で独自のクエリが必要な場合もあります。

カスタムSELECT文

以下は、特定の条件を満たすレコードを抽出する基本的なカスタムクエリの例です。

from peewee import Model, CharField, SqliteDatabase

db = SqliteDatabase('example.db')

class Person(Model):
    name = CharField()
    age = CharField()

    class Meta:
        database = db

# カスタムクエリ
query = Person.select().where(Person.age > 30)
for person in query:
    print(person.name)

この例では、年齢が30歳以上の人物を`Person`テーブルから抽出しています。

拡張の方法

カスタムメソッドの追加

Peeweeのモデルクラスにカスタムメソッドを追加することで、拡張を行うことができます。

class Person(Model):
    name = CharField()
    age = CharField()

    class Meta:
        database = db

    def is_adult(self):
        return int(self.age) >= 20

この`is_adult`メソッドを用いて、成人かどうかを簡単に判断することができます。

応用例

応用例1: 複雑な条件のクエリ

Peeweeでは、複数の条件を組み合わせてクエリを作成することができます。

from peewee import or_

# 複雑な条件のクエリ
query = Person.select().where(or_(Person.age > 30, Person.name == 'Alice'))
for person in query:
    print(person.name)

応用例2: レコードの一括更新

特定の条件を満たすレコードを一括で更新することもできます。

# 年齢が30歳以上のレコードの名前を"Older Person"に更新
query = Person.update(name='Older Person').where(Person.age > 30)
query.execute()

まとめ

Peeweeは非常に柔軟なORMライブラリであり、基本的な操作から高度なカスタムクエリまで対応しています。この記事で紹介した内容を元に、Peeweeでのデータベース操作をより高度に行ってみてはいかがでしょうか。

コメント

コメントする

目次