Menghapus rekaman tertentu
Dengan menggunakan klausa where(), Anda dapat menargetkan pernyataan delete untuk hanya menghapus rekaman tertentu. Misalnya, Jason menghapus semua baris dari tabel employees yang memiliki id 3 dengan pernyataan delete berikut:
delete(employees).where(employees.columns.id == 3)
Di sini Anda akan menghapus SEMUA baris yang memiliki 'M' pada kolom sex dan 36 pada kolom age. Kami telah menyertakan kode di awal yang menghitung total jumlah baris tersebut. Penting untuk memastikan bahwa inilah jumlah baris yang benar-benar Anda hapus.
Latihan ini adalah bagian dari kursus
Pengantar Basis Data di Python
Petunjuk latihan
- Bangun pernyataan
deleteuntuk menghapus data dari tabelcensus. Simpan sebagaidelete_stmt. - Tambahkan klausa
wherekedelete_stmtyang berisiand_untuk memfilter baris yang memiliki'M'pada kolomsexDAN36pada kolomage. - Jalankan pernyataan delete.
- Kirim jawaban untuk mencetak
rowcountdariresults, sertato_delete, yang mengembalikan jumlah baris yang seharusnya dihapus. Keduanya harus cocok dan ini merupakan pemeriksaan kewarasan yang penting!
Latihan interaktif praktis
Cobalah latihan ini dengan menyelesaikan kode contoh berikut.
# 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)