BaşlayınÜcretsiz başlayın

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ş

Kursa Göz Atın

Egzersiz talimatları

  • census tablosundan veri silmek için bir delete ifadesi oluştur ve delete_stmt olarak kaydet.
  • delete_stmt ifadesine bir where koşulu ekle ve içinde and_ kullanarak sex sütununda 'M' OLAN ve age sütununda 36 OLAN satırları filtrele.
  • Silme ifadesini çalıştır.
  • Yanıtı Gönder ve results nesnesinin rowcount değerini, ayrıca silinmesi gereken satır sayısını döndüren to_delete değ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)
Kodu Düzenle ve Çalıştır