특정 레코드 삭제하기
where() 절을 사용하면 delete 문이 특정 레코드만 삭제하도록 지정할 수 있어요. 예를 들어, Jason은 다음과 같은 삭제문으로 employees 테이블에서 id가 3인 모든 행을 삭제했어요:
delete(employees).where(employees.columns.id == 3)
이번에는 sex 열이 'M'이고 age 열이 36인 모든 행을 삭제할 거예요. 시작 부분에 이 조건을 만족하는 전체 행 수를 계산하는 코드를 포함해 두었습니다. 실제로 삭제되는 행 수가 이 값과 일치하는지 확인하는 것이 중요해요.
이 연습은 강의의 일부입니다
Python으로 배우는 데이터베이스 입문
연습 안내
census테이블에서 데이터를 삭제하는delete문을 작성하고delete_stmt로 저장하세요.delete_stmt에where절을 추가하되,and_를 사용해sex열이'M'이고 ANDage열이36인 행만 필터링하세요.- 삭제문을 실행하세요.
- Submit Answer를 눌러
results의rowcount와, 삭제 대상 행 수를 반환하는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)