시작하기무료로 시작하기

특정 레코드 삭제하기

where() 절을 사용하면 delete 문이 특정 레코드만 삭제하도록 지정할 수 있어요. 예를 들어, Jason은 다음과 같은 삭제문으로 employees 테이블에서 id가 3인 모든 행을 삭제했어요:

delete(employees).where(employees.columns.id == 3) 

이번에는 sex 열이 'M'이고 age 열이 36인 모든 행을 삭제할 거예요. 시작 부분에 이 조건을 만족하는 전체 행 수를 계산하는 코드를 포함해 두었습니다. 실제로 삭제되는 행 수가 이 값과 일치하는지 확인하는 것이 중요해요.

이 연습은 강의의 일부입니다

Python으로 배우는 데이터베이스 입문

강의 보기

연습 안내

  • census 테이블에서 데이터를 삭제하는 delete 문을 작성하고 delete_stmt로 저장하세요.
  • delete_stmtwhere 절을 추가하되, and_를 사용해 sex 열이 'M'이고 AND age 열이 36인 행만 필터링하세요.
  • 삭제문을 실행하세요.
  • Submit Answer를 눌러 resultsrowcount와, 삭제 대상 행 수를 반환하는 to_delete를 출력하세요. 두 값이 일치해야 하며, 이는 매우 중요한 검증 단계예요!

실습형 인터랙티브 연습

이 예제를 이 샘플 코드를 완성하여 풀어보세요.

# Build a statement to count records using the sex column for Men ('M') age 36: count_stmt
count_stmt = select([func.count(census.columns.sex)]).where(
    and_(census.columns.sex == 'M',
         census.columns.age == 36)
)

# Execute the select statement and use the scalar() fetch method to save the record count
to_delete = connection.execute(count_stmt).scalar()

# Build a statement to delete records from the census table: delete_stmt
delete_stmt = ____

# Append a where clause to target Men ('M') age 36: delete_stmt
delete_stmt = delete_stmt.____(
    ____(census.columns.sex == ____,
         ____ == ____)
)

# Execute the statement: results
results = connection.execute(____)

# Print affected rowcount and to_delete record count, make sure they match
print(results.rowcount, to_delete)
코드 편집 및 실행