@ -1632,7 +1632,7 @@ class DatabasePool:
txn : LoggingTransaction ,
table : str ,
column : str ,
iterable : Iterable [ Any ] ,
iterable : Collection [ Any ] ,
keyvalues : Dict [ str , Any ] ,
retcols : Iterable [ str ] ,
) - > List [ Dict [ str , Any ] ] :
@ -1891,29 +1891,32 @@ class DatabasePool:
txn : LoggingTransaction ,
table : str ,
column : str ,
iterable : Iterable [ Any ] ,
values : Collection [ Any ] ,
keyvalues : Dict [ str , Any ] ,
) - > int :
""" Executes a DELETE query on the named table.
Filters rows by if value of ` column ` is in ` iterable ` .
Deletes the rows :
- whose value of ` column ` is in ` values ` ; AND
- that match extra column - value pairs specified in ` keyvalues ` .
Args :
txn : Transaction object
table : string giving the table name
column : column name to test for inclusion against ` iterable `
iterable : list
keyvalues : dict of column names and values to select the rows with
column : column name to test for inclusion against ` values `
values : values of ` column ` which choose rows to delete
keyvalues : dict of extra column names and values to select the rows
with . They will be ANDed together with the main predicate .
Returns :
Number rows deleted
"""
if not iterable :
if not values :
return 0
sql = " DELETE FROM %s " % table
clause , values = make_in_list_sql_clause ( txn . database_engine , column , iterable )
clause , values = make_in_list_sql_clause ( txn . database_engine , column , values )
clauses = [ clause ]
for key , value in keyvalues . items ( ) :
@ -2098,7 +2101,7 @@ class DatabasePool:
def make_in_list_sql_clause (
database_engine : BaseDatabaseEngine , column : str , iterable : Iterable
database_engine : BaseDatabaseEngine , column : str , iterable : Collection [ Any ]
) - > Tuple [ str , list ] :
""" Returns an SQL clause that checks the given column is in the iterable.