【Python】peeweeでINSERT IGNOREっぽい実装をする方法

【Python】peeweeでINSERT IGNOREっぽい実装をする方法です。

サンプルコードは以下の通りです。

person, created = Person.get_or_create(
    first_name='John',
    last_name='Lennon',
    defaults={'birthday': datetime.date(1940, 10, 9)})

get_or_createメソッドはデータがあればデータのオブジェクトを返し、なければ新規登録してくれます。

 

上記の例ではfirst_nameカラムとlast_nameカラムを検索対象に指定しています。

 

first_nameカラムに”John”、last_nameカラムに”Lennon”が入っている行が見つかったらデータオブジェクトを返し、見つからなかったらデータが新規登録されます。

 

検索対象にしたくないけど、データを登録したいカラムがある場合はdefaultsで指定してあげれると一緒に登録してくれます。

上記の例ではbirthdayカラムにデータが登録されます。

 

ちなみにget_or_createを使わない実装方法は以下の通りです。

try:
    person = Person.get(
        (Person.first_name == 'John') &
        (Person.last_name == 'Lennon'))
except Person.DoesNotExist:
    person = Person.create(
        first_name='John',
        last_name='Lennon',
        birthday=datetime.date(1940, 10, 9))

お気軽にコメントをどうぞ

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください