def delete_single(self, name: str): logging.info(f'user {name} prepare to be deleted') session = Session() query = session.query(Users).filter(Users.name == name) try: user = query.one() session.delete(user) session.commit() logging.info(f'user {name} has been deleted') except NoResultFound: session.rollback() logging.info(f'fail to delete user {name}') raise UserDoesNotExistError(f'用户 {name} 不存在') finally: session.close()
def delete_set(self, name_set: set): # 避免对容器类型数据直接操作 internal_name_set = copy.copy(name_set) logging.info(f'these users {internal_name_set} prepare to be deleted') session = Session() query = session.query(Users).filter(Users.name.in_(internal_name_set)) try: users = query.all() for user in users: internal_name_set.remove(user.name) session.delete(user) if len(internal_name_set) != 0: session.rollback() logging.info(f'these users {internal_name_set} do not exist, transaction has rolled back') raise UserDoesNotExistError(f'这些用户不存在 {internal_name_set}') session.commit() logging.info(f'all users have been deleted') finally: # 关闭会话 session.close()