Borrar registros específicos
Usando una cláusula where(), puedes dirigir la sentencia delete para eliminar solo ciertos registros. Por ejemplo, Jason borró todas las filas de la tabla employees que tenían id 3 con la siguiente sentencia de borrado:
delete(employees).where(employees.columns.id == 3)
Aquí vas a borrar TODAS las filas que tengan 'M' en la columna sex y 36 en la columna age. Hemos incluido código al principio que calcula el número total de estas filas. Es importante asegurarte de que este sea el número de filas que realmente borras.
Este ejercicio forma parte del curso
Introducción a las bases de datos en Python
Instrucciones del ejercicio
- Crea una sentencia
deletepara eliminar datos de la tablacensus. Guárdala comodelete_stmt. - Añade una cláusula
whereadelete_stmtque contenga unand_para filtrar las filas que tengan'M'en la columnasexY36en la columnaage. - Ejecuta la sentencia de borrado.
- Envia la respuesta para imprimir el
rowcountderesults, así comoto_delete, que devuelve el número de filas que deberían borrarse. Ambos deben coincidir y esto es una comprobación importante.
Ejercicio interactivo práctico
Prueba este ejercicio y completa el código de muestra.
# 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)