From 0d0874a84606acf5298597bb3f7f0572af69e60d Mon Sep 17 00:00:00 2001 From: kimdoori Date: Thu, 30 Apr 2020 20:51:34 +0900 Subject: [PATCH] Add save_words_task --- word_way/scrapping/word.py | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/word_way/scrapping/word.py b/word_way/scrapping/word.py index 7c2bf81..3ac8804 100644 --- a/word_way/scrapping/word.py +++ b/word_way/scrapping/word.py @@ -16,7 +16,7 @@ from word_way.models import Pronunciation, Sentence, Word, WordSentenceAssoc from word_way.utils import convert_word_part -__all__ = 'save_word', 'save_word_task', +__all__ = 'save_word', 'save_word_task', 'save_words_task', @celery.task @@ -24,6 +24,22 @@ def save_word_task(target_word: str): save_word(target_word, session) +@celery.task +def save_words_task(): + """단어가 없는 발음을 가져와서 단어를 저장하는 테스크""" + subquery = session.query(Word).filter( + Word.pronunciation_id == Pronunciation.id + ) + pronunciations = session.query(Pronunciation).filter( + ~subquery.exists() + ).all() + for pronunciation in pronunciations: + pronunciation_id = save_word(pronunciation.pronunciation, session) + if pronunciation.id != pronunciation_id: + session.delete(pronunciation) + session.commit() + + def save_word( target_word: str, session: Session, ) -> typing.Optional[uuid.UUID]: @@ -33,7 +49,7 @@ def save_word( :type target_word: :class:`str` :param session: 사용할 세션 :type session: :class:`sqlalchemy.orm.session.Session` - :return: target_word와 발음이 정확히 일치하는 발음 ID + :return: target_word와 발음이 정확히 일치하는 발음 ID, 없다면 None을 반환합니다 :rtype: typing.Optional[uuid.UUID] """