clean_suspected_errors.py 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. import pymysql
  2. print('清理数据库中只包含空格和换行符的疑似错误标注...')
  3. try:
  4. conn = pymysql.connect(
  5. host='rm-f8ze60yirdj8786u2wo.mysql.rds.aliyuncs.com',
  6. port=3306,
  7. user='root',
  8. password='csqz@20255',
  9. db='csqz-client',
  10. charset='utf8mb4',
  11. cursorclass=pymysql.cursors.DictCursor
  12. )
  13. print('数据库连接成功')
  14. cursor = conn.cursor()
  15. # 1. 先查询需要清理的记录
  16. query = """
  17. SELECT id, name, suspected_error
  18. FROM family_member_info
  19. WHERE suspected_error IS NOT NULL AND TRIM(suspected_error) = ''
  20. """
  21. cursor.execute(query)
  22. records = cursor.fetchall()
  23. print(f'\n找到 {len(records)} 条需要清理的记录')
  24. if records:
  25. print('\n详细信息:')
  26. for record in records:
  27. print(f'ID: {record["id"]}, 姓名: {record["name"]}, 疑似错误标注: {repr(record["suspected_error"])}')
  28. # 2. 清理这些记录,将suspected_error设置为NULL
  29. update_query = """
  30. UPDATE family_member_info
  31. SET suspected_error = NULL
  32. WHERE id = %s
  33. """
  34. count = 0
  35. for record in records:
  36. cursor.execute(update_query, (record['id'],))
  37. count += 1
  38. conn.commit()
  39. print(f'\n成功清理 {count} 条记录')
  40. else:
  41. print('\n没有需要清理的记录')
  42. # 3. 验证清理结果
  43. cursor.execute(query)
  44. remaining_records = cursor.fetchall()
  45. print(f'\n清理后剩余 {len(remaining_records)} 条需要清理的记录')
  46. if remaining_records:
  47. print('\n剩余记录详细信息:')
  48. for record in remaining_records:
  49. print(f'ID: {record["id"]}, 姓名: {record["name"]}, 疑似错误标注: {repr(record["suspected_error"])}')
  50. conn.close()
  51. except Exception as e:
  52. print(f'Error: {e}')