[python] Peewee에서 쿼리 조건 설정하기: filter(), where()

Peewee는 파이썬에서 사용할 수 있는 간단하고 직관적인 ORM(Object Relational Mapping) 라이브러리입니다. Peewee를 사용하면 데이터베이스에 쿼리를 보내고 결과를 처리하는 작업을 쉽게 수행할 수 있습니다. 이번 포스트에서는 Peewee의 filter()where() 메소드를 사용하여 쿼리 조건을 설정하는 방법에 대해서 알아보겠습니다.

filter() 메소드

filter() 메소드는 쿼리 결과를 필터링하기 위해 사용됩니다. 이 메소드는 Peewee 모델의 필드와 값을 인자로 받아 해당 필드의 값을 조건으로 적용합니다.

from peewee import *

db = SqliteDatabase('my_database.db')

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

    class Meta:
        database = db

# 예시 데이터 생성
Person.create(name='Alice', age=25)
Person.create(name='Bob', age=30)

# 필터링 쿼리
query = Person.filter(name='Alice')

위의 예제에서는 filter() 메소드를 사용하여 name 필드의 값이 ‘Alice’인 데이터를 필터링했습니다. 이렇게 필터링된 결과는 query 변수에 저장됩니다.

where() 메소드

where() 메소드는 더 복잡한 쿼리 조건을 설정하기 위해 사용됩니다. 여러 조건을 조합하여 쿼리를 작성할 수 있습니다.

# 조건 추가하여 필터링
query = Person.where((Person.name == 'Alice') & (Person.age > 20))

위의 예제에서는 where() 메소드를 사용하여 name이 ‘Alice’이고 age가 20보다 큰 데이터를 필터링했습니다. & 연산자를 사용하여 두 개의 조건을 동시에 만족하는 데이터를 찾았습니다.

실행 결과 가져오기

필터링 된 쿼리를 실행하여 결과를 가져올 수 있습니다.

# 결과 가져오기
results = query.execute()
for person in results:
    print(person.name, person.age)

위의 예제에서는 execute() 메소드를 사용하여 필터링된 쿼리를 실행한 후 결과를 가져왔습니다. 결과는 results 변수에 저장되고, 이를 통해 필터링된 데이터를 순회하며 출력할 수 있습니다.

Peewee의 filter()where() 메소드를 사용하면 간단하고 효율적으로 쿼리 조건을 설정할 수 있습니다. 이러한 메소드를 통해 데이터베이스 작업을 쉽게 수행할 수 있습니다.

더 많은 정보를 원하시면 Peewee 공식 문서를 참고하시기 바랍니다.