~Stock_rpa_mm373.location.in_(location_list),
-
这个符号代表非
def delete_duplicate_location_mm373():
location_list = session.query(Stock_rpa_mm373.location).filter(Stock_rpa_mm373.code=='SG17').distinct().all()
location_list = [x[0] for x in location_list]
print('code list',len(location_list), location_list)
delete_list = session.query(Stock_rpa_mm373).filter(
or_(
~Stock_rpa_mm373.location.in_(location_list),
Stock_rpa_mm373.code != 'SG17'
)).delete(synchronize_session=False)
print('len delete list', delete_list)
duplicates = session.query(Stock_rpa_mm373.location, func.count(Stock_rpa_mm373.location)).group_by(Stock_rpa_mm373.location).having(
func.count(Stock_rpa_mm373.location) > 1).all()
print(len(duplicates))
print(duplicates)
for duplicate in duplicates:
name = duplicate[0]
duplicate_records = session.query(Stock_rpa_mm373).filter(Stock_rpa_mm373.location == name).all()
for record in duplicate_records[1:]:
session.delete(record)
session.commit()