0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

peeweeでSELECTを使う場合の使い分けについて

Posted at

前回の記事でpeeweeの全文検索についての方法をまとめましたが今回は通常のSELECTに焦点を当てて
内容を整理してみようかと思います。

参考資料

環境

  • peewee:3.14.2
  • python3.8

記載する取得方法について

ここではpeeweeで推奨されているatomic()を使用した方法を紹介します
atomic()の詳細については以下を参照してください

全件取得の場合

全件取得の場合は単純にselectで取得します
返却値は配列で取得できるので配列の中身を
model_to_dict(query)を使用してDictに変換します

    try:
        with db.atomic():
            query = TEST_DB.select()
    except Exception as e:
        db.rollback()
        raise(e)

    return model_to_dict(query) # model_to_dictで取得データをdictに変更する

条件を指定した取得の場合

条件を設定する場合はwhereに検索条件を挿入します
またフィルタリングを行う場合はselectに引数で指定します
返却値は配列で取得できるので配列の中身を
model_to_dict(query)を使用してDictに変換します

    try:
        with db.atomic():
            query = TEST_DB.select(
                        TEST_DB.cat) \                 #取得するカラムを絞る場合はselectのパラメータに対象カラムを指定
                        .where(
                            TEST_DB.cat =="検索条件",    #検索条件をwhereに指定する
                            TEST_DB.is_deleted == False
                        )
    except Exception as e:
        db.rollback()
        raise(e)

1件だけ取得する場合

1件だけ取得する場合はget()を使用します
※get()を使用する場合は1件が確実に取得できる場合です
 取得できなかった場合はDoesNotExistがスローされます

    try:
        with db.atomic():
            query = TEST_DB.select(
                        EST_DB.cat) \                 #取得するカラムを絞る場合はselectのパラメータに対象カラムを指定
                        .where(
                            TEST_DB.cat =="検索条件",    #検索条件をwhereに指定する
                            TEST_DB.is_deleted == False
                        ).get() # 1件だけ取得する場合は指定する
    except TEST_DB.DoesNotExist as ne:
        db.rollback()
        raise(ne)
    except Exception as e:
        db.rollback()
        raise(e)

    return model_to_dict(query) # model_to_dictで取得データをdictに変更する

返却値は配列ではなく1件のみのデータで取得されますのでそのまま
model_to_dict(query)を使用してDictに変換します

0
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?