[파이썬] Peewee Conditional inserts 및 updates

Peewee is a simple yet powerful object-relational mapping (ORM) library for Python. It provides a convenient way to interact with relational databases using a simple and expressive syntax. In this blog post, we will explore how to perform conditional inserts and updates using Peewee.

Conditional Inserts

Sometimes, we want to insert a record into a database only if certain conditions are met. Peewee provides a method called get_or_create() that can be used for this purpose. This method tries to retrieve a record from the database based on the specified conditions. If the record exists, it is returned; otherwise, a new record is created.

Here is an example of how to use get_or_create():

from peewee import *

db = SqliteDatabase('mydatabase.db')

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

    class Meta:
        database = db

db.create_tables([Person])

person, created = Person.get_or_create(name='John', age=25)

In the above code, we define a Person model with two fields: name and age. We then use get_or_create() to retrieve a Person record with the specified name and age from the database. If the record exists, it is assigned to the variable person, and the variable created is set to False. If the record doesn’t exist, a new record is created with the specified values, assigned to person, and created is set to True.

Conditional Updates

In addition to conditional inserts, Peewee also provides a way to perform conditional updates. This can be done using the update() method, which allows you to update records in the database based on specified conditions.

Here is an example of how to use the update() method:

from peewee import *

db = SqliteDatabase('mydatabase.db')

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

    class Meta:
        database = db

db.create_tables([Person])

Person.update(age=Person.age + 1).where(Person.name == 'John').execute()

In the above code, we use the update() method to increment the age field of all Person records with the name ‘John’ by 1. The execute() method executes the update query.

Conclusion

Peewee provides an easy and intuitive way to perform conditional inserts and updates in Python. The get_or_create() method allows you to insert a record only if it doesn’t already exist, while the update() method allows you to update records based on specified conditions. These features make Peewee a powerful tool for working with databases in Python.