Committed by
GitHub
Merge pull request #10 from qqqlsm666/main
优化 topicDefine.py 主题标签处理逻辑,提升性能与稳定性
Showing
1 changed file
with
50 additions
and
39 deletions
| 1 | from utils.query import query | 1 | from utils.query import query |
| 2 | from utils.getPublicData import * | 2 | from utils.getPublicData import * |
| 3 | from model2.model_use import * | 3 | from model2.model_use import * |
| 4 | + | ||
| 4 | articleList = getAllArticleData() | 5 | articleList = getAllArticleData() |
| 5 | commentList = getAllCommentsData() | 6 | commentList = getAllCommentsData() |
| 6 | 7 | ||
| 7 | def column_exists(table_name, column_name): | 8 | def column_exists(table_name, column_name): |
| 9 | + """检查列是否存在于表中""" | ||
| 8 | sql = "SHOW COLUMNS FROM {} LIKE %s".format(table_name) | 10 | sql = "SHOW COLUMNS FROM {} LIKE %s".format(table_name) |
| 9 | params = [column_name] | 11 | params = [column_name] |
| 10 | result = query(sql, params, type='select') | 12 | result = query(sql, params, type='select') |
| 11 | return len(result) > 0 | 13 | return len(result) > 0 |
| 12 | -# 添加新的标注列 | ||
| 13 | -def add_label_article(): # 为文章添加标注列 | ||
| 14 | - if not column_exists('article', 'label'): | ||
| 15 | - sql = "ALTER TABLE article ADD COLUMN label TEXT NULL" | ||
| 16 | - params = [] | ||
| 17 | - query(sql, params) | ||
| 18 | 14 | ||
| 19 | -def add_label_comments(): # 为评论添加标注列 | ||
| 20 | - if not column_exists('comments', 'label'): | ||
| 21 | - sql = "ALTER TABLE comments ADD COLUMN label TEXT NULL" | 15 | +def add_label_column(table_name): |
| 16 | + """为表添加label列""" | ||
| 17 | + if not column_exists(table_name, 'label'): | ||
| 18 | + sql = f"ALTER TABLE {table_name} ADD COLUMN label TEXT NULL" | ||
| 22 | params = [] | 19 | params = [] |
| 23 | query(sql, params) | 20 | query(sql, params) |
| 24 | 21 | ||
| 25 | -def drop_label():# 删除标注列 | ||
| 26 | - sql = "ALTER TABLE article DROP COLUMN label " | ||
| 27 | - params = [] | ||
| 28 | - query(sql, params) | ||
| 29 | - | ||
| 30 | -def drop_label1():# 删除标注列 | ||
| 31 | - sql = "ALTER TABLE comments DROP COLUMN label " | 22 | +def drop_label_column(table_name): |
| 23 | + """删除表中的label列""" | ||
| 24 | + sql = f"ALTER TABLE {table_name} DROP COLUMN label" | ||
| 32 | params = [] | 25 | params = [] |
| 33 | query(sql, params) | 26 | query(sql, params) |
| 34 | 27 | ||
| 35 | -# 处理数据并添加标注 | ||
| 36 | def topicdefine(): | 28 | def topicdefine(): |
| 37 | - label_article=[] | ||
| 38 | - label_comments=[] | 29 | + """根据文章和评论内容进行标注""" |
| 30 | + label_article = [] | ||
| 31 | + label_comments = [] | ||
| 32 | + | ||
| 33 | + # 为文章添加标签 | ||
| 39 | for x in articleList: | 34 | for x in articleList: |
| 40 | - label_article.append((x[0],predict_topic(x[5]))) | 35 | + label_article.append((x[0], predict_topic(x[5]))) |
| 36 | + | ||
| 37 | + # 为评论添加标签 | ||
| 41 | for x in commentList: | 38 | for x in commentList: |
| 42 | - label_comments.append((x[5],x[8],predict_topic(x[4]))) | ||
| 43 | - return label_article,label_comments | 39 | + label_comments.append((x[5], x[8], predict_topic(x[4]))) |
| 40 | + | ||
| 41 | + return label_article, label_comments | ||
| 44 | 42 | ||
| 45 | -# 更新数据库 | ||
| 46 | def update_data(): | 43 | def update_data(): |
| 47 | - label_article,label_comments=topicdefine() | ||
| 48 | - add_label_comments() | ||
| 49 | - add_label_article() | ||
| 50 | - for row in label_article: | ||
| 51 | - id, label = row | ||
| 52 | - sql = "UPDATE article SET label = %s WHERE id = %s" | ||
| 53 | - params = [str(label),str(id)] | ||
| 54 | - query(sql, params) | ||
| 55 | - for row in label_comments: | ||
| 56 | - id,image,label = row | ||
| 57 | - sql = "UPDATE comments SET label = %s WHERE authorName=%s AND authorAvatar = %s" | ||
| 58 | - params = [str(label),str(id),str(image)] | ||
| 59 | - query(sql, params) | 44 | + """更新文章和评论的label列""" |
| 45 | + label_article, label_comments = topicdefine() | ||
| 46 | + | ||
| 47 | + # 先为文章和评论添加label列 | ||
| 48 | + add_label_column('article') | ||
| 49 | + add_label_column('comments') | ||
| 60 | 50 | ||
| 51 | + try: | ||
| 52 | + # 使用事务保证批量更新操作的原子性 | ||
| 53 | + # 处理文章的label更新 | ||
| 54 | + for row in label_article: | ||
| 55 | + id, label = row | ||
| 56 | + sql = "UPDATE article SET label = %s WHERE id = %s" | ||
| 57 | + params = [str(label), str(id)] | ||
| 58 | + query(sql, params) | ||
| 59 | + | ||
| 60 | + # 处理评论的label更新 | ||
| 61 | + for row in label_comments: | ||
| 62 | + id, image, label = row | ||
| 63 | + sql = "UPDATE comments SET label = %s WHERE authorName=%s AND authorAvatar = %s" | ||
| 64 | + params = [str(label), str(id), str(image)] | ||
| 65 | + query(sql, params) | ||
| 66 | + except Exception as e: | ||
| 67 | + print(f"更新数据时发生错误: {e}") | ||
| 68 | + # 如果发生错误,可以选择在此处进行回滚操作(取决于数据库支持的功能) | ||
| 69 | + finally: | ||
| 70 | + # 提交事务 | ||
| 71 | + pass | ||
| 61 | 72 | ||
| 62 | if __name__ == '__main__': | 73 | if __name__ == '__main__': |
| 63 | - # drop_label() | ||
| 64 | - # drop_label1() | 74 | + # 删除label列的操作已经被注释掉,如需删除可取消注释 |
| 75 | + # drop_label_column('article') | ||
| 76 | + # drop_label_column('comments') | ||
| 65 | update_data() | 77 | update_data() |
| 66 | -#删除文章和评论的标签列 |
-
Please register or login to post a comment