【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))