123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250 |
- # -*- coding: utf-8 -*-
- from tools.new_mysql import MySQLUploader
- from tools.loglog import logger
- from core.respone_format import *
- class CRUD:
- def __init__(self):
- self.m = MySQLUploader()
- self.people_place_name = []
- self.get_people_place_name()
- def get_word_by_wordid(self, wordid):
- s = "select WordSpelling from dictionary_word where Id = %s"
- r = self.m.query_data(s, (wordid,))
- if r:
-
- word = r[0][0]
- return word
- return None
- def get_wordid_by_wordspelling(self, wordspelling,auto_insert=False):
- """加一个功能。大字典内没有这个单词就自动插入,返回id。auto_insert为真,自动插入大字典,获取其id"""
- s = "select Id from dictionary_word where wordspelling = %s"
- r = self.m.query_data(s, (wordspelling,))
- if r:
-
- wordid = r[0][0]
- return wordid
- if auto_insert:
- s = "insert into dictionary_word (WordSpelling) VALUES (%s);"
- self.m.execute_(s,(wordspelling,))
- s = "select Id from dictionary_word where wordspelling = %s"
- r = self.m.query_data(s, (wordspelling,))
- wordid = r[0][0]
- return wordid
-
- def get_exchange_prototype(self,wordspelling):
- s = "select Word from dictionary_exchange where Word = %s"
- r = self.m.query_data(s, (wordspelling,))
- if r:
- return list({i[0] for i in r})
- s2 = "select Word from dictionary_exchange where InflectedWordSpelling = %s"
- r2 = self.m.query_data(s2, (wordspelling,))
- if r2:
- return list({i[0] for i in r2})
- def get_word_meaning_by_wordid(self, wordid):
- s = "select Id,WordSpelling,WordMeaning from dictionary_meaningitem where WordId = %s"
- r = self.m.query_data(s, (wordid,))
- return r
-
- def get_people_place_name(self):
- s2 = "select word from people_place_name"
- r = self.m.query_data(s2)
- for i in r:
- self.people_place_name.append(i[0])
-
- def get_word_meaning_by_wordspelling(self, wordspelling, frequency):
- """根据单词获取其全部词义"""
-
- wordid = self.get_wordid_by_wordspelling(wordspelling)
-
- return_data = {"word_id": wordid, "frequency": frequency, "word": wordspelling,
- "meanings": {"default": [], "sun_english": {"name": "春笋英语", "items": []}, "oxford": {"name": "牛津", "items": []}}}
-
- s = "select Id,WordMeaning from dictionary_meaningitem where WordSpelling = %s"
- r = self.m.query_data(s, (wordspelling,))
- for row_data in r:
- return_data["meanings"]["default"].append({"id": row_data[0], "text": row_data[1]})
-
- s2 = "select Id,WordMeaning from dictionary_meaningitem_spring_bamboo where WordSpelling = %s"
- r2 = self.m.query_data(s2, (wordspelling,))
- for row_data in r2:
- return_data["meanings"]["sun_english"]["items"].append({"id": row_data[0], "text": row_data[1]})
-
- s2 = "select Id,WordMeaning from dictionary_meaningitem_oxford where WordSpelling = %s"
- r2 = self.m.query_data(s2, (wordspelling,))
- for row_data in r2:
- return_data["meanings"]["oxford"]["items"].append({"id": row_data[0], "text": row_data[1]})
- return return_data
- def delete_word_meaning_by_wordmeaningid(self, wordmeaningid):
- s = "DELETE FROM dictionary_meaningitem where Id = %s"
- r = self.m.execute_(s, (wordmeaningid,))
- logger.info(f"根据词义id删除,{wordmeaningid}。结果{r}")
- return True if r is True else False
- def get_word_all_info(self,word_id, spell,frequency):
- def get_associational_words_info(word_meaning_id) -> list:
- return_data = []
- s = "select Id,BaseWordMeaningId,BaseWord,BaseWordMeaning,AssociationalWord,AssociationalWordMeaningId,AssociationalWordMeaning," \
- "AssociationReason,ReverseAssociationReason,CreatedTime,UpdatedTime " \
- "from dictionary_associational_word where BaseWordMeaningId = %s"
- r = self.m.query_data(s, (word_meaning_id,))
- if not r:
- return return_data
- for single_meaning in r:
- associational_id, base_word_meaning_id, base_word, base_word_meaning, associational_word, \
- associational_word_meaning_id, associational_word_meaning, association_reason,\
- reverse_association_reason, created_time, updated_time = single_meaning
- r_data = {"id":associational_id,"base_word":{"word":base_word,"meaning_id":base_word_meaning_id,"meaning":base_word_meaning},
- "associational_word":{"word":associational_word,"meaning_id":associational_word_meaning_id,"meaning":associational_word_meaning},
- "association_reason":association_reason,"reverse_association_reason":reverse_association_reason,
- "create_time":created_time.strftime('%Y-%m-%d %H:%M:%S'),"update_time":updated_time.strftime('%Y-%m-%d %H:%M:%S')}
- return_data.append(r_data)
- return return_data
- def get_phrases_info(word_meaning_id) -> list:
- return_data = []
- s = "select Id,PhraseSpellingText,PhraseChineseTranslation,FromType,CreatedTime,UpdatedTime " \
- "from dictionary_phrase where WordMeaningId = %s"
- r = self.m.query_data(s, (word_meaning_id,))
- if not r:
- return return_data
- for single_phrase in r:
- phrase_id, phrase_spelling_text, phrase_chinese_translation, from_type, created_time, updated_time = single_phrase
- r_data = {"id":phrase_id,"english":phrase_spelling_text,"chinese":phrase_chinese_translation,"from":from_type,
- "create_time":created_time.strftime('%Y-%m-%d %H:%M:%S'),"update_time":updated_time.strftime('%Y-%m-%d %H:%M:%S')}
- return_data.append(r_data)
- return return_data
- def get_exchanges_info(word_id) -> list:
- return_data = []
- s = "select Id,InflectedWordSpelling,Properties,WordTransformationDescription " \
- "from dictionary_exchange where WordId = %s"
- r = self.m.query_data(s, (word_id,))
- if not r:
- return return_data
- for single_exchange in r:
- exchange_id,spell,properties,description = single_exchange
- r_data = {"id": exchange_id, "spell": spell, "properties": properties, "description": description}
- return_data.append(r_data)
- return return_data
- return_data_all = {"word_id":word_id,"spell":spell,"frequency":frequency,"meanings":[],"exchanges":[]}
- if spell in self.people_place_name:
- return_data_all["type"] = "人名地名"
- return_data_all["type"] = "一般词汇"
- s = "select Id,WordMeaning,OperateAccount from dictionary_meaningitem where WordId = %s"
- r = self.m.query_data(s, (word_id,))
- if not r:
- return resp_200(data=return_data_all)
- for single_meaning in r:
- meaning_id, word_meaning, operate_account = single_meaning
- single_meaning_item = {"id":meaning_id,"text":word_meaning,"editor":operate_account}
- associational_words_list = get_associational_words_info(meaning_id)
- single_meaning_item["associational_words"] = associational_words_list
- phrases_list = get_phrases_info(meaning_id)
- single_meaning_item["phrases"] = phrases_list
- return_data_all["meanings"].append(single_meaning_item)
- exchanges_info_list = get_exchanges_info(word_id)
- return_data_all["exchanges"] = exchanges_info_list
- return resp_200(data=return_data_all)
- def delete_associational_word(self,word_id,associational_id):
- s = "select Id from dictionary_meaningitem where WordId = %s"
- r = self.m.query_data(s, (word_id,))
- if not r:
- return resp_400(message="词义表内没有这个单词的词义")
- meaning_id = r[0][0]
- s = "select BaseWordMeaningId from dictionary_associational_word where Id = %s"
- r = self.m.query_data(s, (associational_id,))
-
- if r and r[0][0]==meaning_id:
- s = "DELETE FROM dictionary_associational_word where Id = %s"
- r = self.m.execute_(s, (associational_id,))
- logger.info(f"根据联想词id删除,{associational_id}。结果{r}")
- data = True if r is True else False
- return resp_200(data=[data]) if data else resp_500(message="数据库内部错误")
- else:
- logger.info(f"删除联想词时,单词id与联想词id校验失败。{r} {meaning_id}")
- return resp_400(message="单词id与联想词id校验失败")
- def delete_phrese_word(self,word_id,phrase_id):
- s = "select Id from dictionary_meaningitem where WordId = %s"
- r = self.m.query_data(s, (word_id,))
- if not r:
- return resp_400(message="词义表内没有这个单词的词义")
- meaning_id = r[0][0]
- s = "select WordMeaningId from dictionary_phrase where Id = %s"
- r = self.m.query_data(s, (phrase_id,))
-
- if r and r[0][0] == meaning_id:
- s = "DELETE FROM dictionary_phrase where Id = %s"
- r = self.m.execute_(s, (phrase_id,))
- logger.info(f"根据联想词id删除,{phrase_id}。结果{r}")
- data = True if r is True else False
- return resp_200(data=[data]) if data else resp_500(message="数据库内部错误")
- else:
- logger.info(f"删除语块时,单词id与语块id校验失败。{r} {meaning_id}")
- return resp_400(message="单词id与联想词id校验失败")
- def close_connection(self):
- """关闭数据库连接"""
- self.m.close_connection()
- class UserCRUD:
- def __init__(self):
- self.m = MySQLUploader()
- def get_userinfo_by_account(self, account):
- s = "select id,account,password,uname,create_time from user where account = %s"
- r = self.m.query_data(s, (account,))
- if r:
-
- user_info = (r[0][0], r[0][1], r[0][2], r[0][3], r[0][4].strftime('%Y-%m-%d %H:%M:%S'))
- return user_info
- return None
- def close_connection(self):
- """关闭数据库连接"""
- self.m.close_connection()
- if __name__ == '__main__':
- crud = CRUD()
-
-
-
-
-
- r = crud.get_wordid_by_wordspelling("abcdefg")
- print(type(r))
- print(r)
- crud.close_connection()
|