Belirli kayıtları silme
Bir where() koşulu kullanarak, delete ifadesini yalnızca belirli kayıtları silecek şekilde hedefleyebilirsin. Örneğin, Jason aşağıdaki delete ifadesiyle employees tablosunda id değeri 3 olan tüm satırları sildi:
delete(employees).where(employees.columns.id == 3)
Burada ise sex sütununda 'M' ve age sütununda 36 olan TÜM satırları sileceksin. Başlangıçta bu satırların toplam sayısını hesaplayan kodu ekledik. Gerçekte sildiğin satır sayısının bu sayı ile aynı olduğundan emin olmak önemlidir.
Bu egzersiz, kursun bir parçasıdır
Python ile Veritabanlarına Giriş
Egzersiz talimatları
censustablosundan veri silmek için birdeleteifadesi oluştur vedelete_stmtolarak kaydet.delete_stmtifadesine birwherekoşulu ekle ve içindeand_kullanaraksexsütununda'M'OLAN veagesütununda36OLAN satırları filtrele.- Silme ifadesini çalıştır.
- Yanıtı Gönder ve
resultsnesnesininrowcountdeğerini, ayrıca silinmesi gereken satır sayısını döndürento_deletedeğişkenini yazdır. Bunlar eşleşmeli; bu önemli bir tutarlılık kontrolüdür!
Uygulamalı etkileşimli egzersiz
Bu egzersizi bu örnek kodu tamamlayarak deneyin.
# 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)