init
This commit is contained in:
43
spider/action_migration.py
Normal file
43
spider/action_migration.py
Normal file
@ -0,0 +1,43 @@
|
||||
import logging
|
||||
|
||||
from normalutils.choices import StateType
|
||||
import omodels as om
|
||||
import models as sm
|
||||
|
||||
|
||||
word_fn = lambda word: {
|
||||
"spelling": word.spelling,
|
||||
"importance": word.importance,
|
||||
"state": StateType.PUBLISHED.value,
|
||||
}
|
||||
meaning_fn = lambda meaning: {
|
||||
"meaning": meaning.meaning,
|
||||
"word_property": meaning.word_property,
|
||||
"state": StateType.PUBLISHED.value
|
||||
}
|
||||
|
||||
|
||||
def migrate_word_meanings(o_session, word: sm.Word):
|
||||
if word.spelling is None:
|
||||
logging.error("word is None. word id is {}".format(word.id))
|
||||
return
|
||||
meanings = word.meanings
|
||||
o_word_dict = word_fn(word)
|
||||
o_word = om.OWord(**o_word_dict)
|
||||
o_session.add(o_word)
|
||||
|
||||
for meaning in meanings:
|
||||
meaningfield = om.OMeaningField(word=o_word)
|
||||
o_session.add(meaningfield)
|
||||
meaning_dict = meaning_fn(meaning)
|
||||
meaning = om.OMeaning(meaningfield=meaningfield, **meaning_dict)
|
||||
o_session.add(meaning)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
with sm.Session() as s_session:
|
||||
words = s_session.query(sm.Word)
|
||||
with om.OSession() as o_session:
|
||||
for word in words:
|
||||
migrate_word_meanings(o_session, word)
|
||||
o_session.commit()
|
Reference in New Issue
Block a user