clean_all_empty_suspected_errors.py 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  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. # 2. 清理这些记录,将suspected_error设置为NULL
  26. update_query = """
  27. UPDATE family_member_info
  28. SET suspected_error = NULL
  29. WHERE id = %s
  30. """
  31. count = 0
  32. for record in records:
  33. cursor.execute(update_query, (record['id'],))
  34. count += 1
  35. conn.commit()
  36. print(f'\n成功清理 {count} 条记录')
  37. else:
  38. print('\n没有需要清理的记录')
  39. # 3. 验证清理结果
  40. cursor.execute(query)
  41. remaining_records = cursor.fetchall()
  42. print(f'\n清理后剩余 {len(remaining_records)} 条需要清理的记录')
  43. # 4. 检查清理后的数据
  44. cursor.execute("SELECT COUNT(*) as count FROM family_member_info WHERE suspected_error IS NOT NULL")
  45. remaining_non_null = cursor.fetchone()['count']
  46. print(f'\n清理后suspected_error不为NULL的记录数: {remaining_non_null}')
  47. conn.close()
  48. except Exception as e:
  49. print(f'Error: {e}')