From b436b1fa9bf0011acb547948468627e8cde40c76 Mon Sep 17 00:00:00 2001
From: hyb <kk_huangyangbo@163.com>
Date: Fri, 05 Dec 2025 09:28:59 +0000
Subject: [PATCH] 优化各项目数据库地址变更和端口号变更后的数据库获取问题 增加数据库表中的端口字段,获取对应项目的端口号
---
测试组/脚本/Change_password/修改数据库的哈希密码和原始密码做桌面客户端源代码(argon2id).py | 105 ++++++++++++++++++++++++++++++++++++++++++++++++++--
1 files changed, 100 insertions(+), 5 deletions(-)
diff --git "a/\346\265\213\350\257\225\347\273\204/\350\204\232\346\234\254/Change_password/\344\277\256\346\224\271\346\225\260\346\215\256\345\272\223\347\232\204\345\223\210\345\270\214\345\257\206\347\240\201\345\222\214\345\216\237\345\247\213\345\257\206\347\240\201\345\201\232\346\241\214\351\235\242\345\256\242\346\210\267\347\253\257\346\272\220\344\273\243\347\240\201\357\274\210argon2id\357\274\211.py" "b/\346\265\213\350\257\225\347\273\204/\350\204\232\346\234\254/Change_password/\344\277\256\346\224\271\346\225\260\346\215\256\345\272\223\347\232\204\345\223\210\345\270\214\345\257\206\347\240\201\345\222\214\345\216\237\345\247\213\345\257\206\347\240\201\345\201\232\346\241\214\351\235\242\345\256\242\346\210\267\347\253\257\346\272\220\344\273\243\347\240\201\357\274\210argon2id\357\274\211.py"
index d9c6d6b..03a65c9 100644
--- "a/\346\265\213\350\257\225\347\273\204/\350\204\232\346\234\254/Change_password/\344\277\256\346\224\271\346\225\260\346\215\256\345\272\223\347\232\204\345\223\210\345\270\214\345\257\206\347\240\201\345\222\214\345\216\237\345\247\213\345\257\206\347\240\201\345\201\232\346\241\214\351\235\242\345\256\242\346\210\267\347\253\257\346\272\220\344\273\243\347\240\201\357\274\210argon2id\357\274\211.py"
+++ "b/\346\265\213\350\257\225\347\273\204/\350\204\232\346\234\254/Change_password/\344\277\256\346\224\271\346\225\260\346\215\256\345\272\223\347\232\204\345\223\210\345\270\214\345\257\206\347\240\201\345\222\214\345\216\237\345\247\213\345\257\206\347\240\201\345\201\232\346\241\214\351\235\242\345\256\242\346\210\267\347\253\257\346\272\220\344\273\243\347\240\201\357\274\210argon2id\357\274\211.py"
@@ -28,6 +28,11 @@
DEFAULT_NEW_PASSWORD = 'Baoyi@1341'
PROTECTED_USER_ID = 1
+# Redis配置
+REDIS_HOST = '192.168.6.168'
+REDIS_PORT = 6002
+REDIS_PASSWORD = None
+
# 导入Argon2PasswordEncoder相关库
try:
from argon2 import PasswordHasher
@@ -51,9 +56,89 @@
salt_len=SALT_LENGTH
)
+
def encode_password(raw_password):
"""使用Argon2编码密码"""
return argon2_hasher.hash(raw_password)
+
+
+class RedisRefresher:
+ """Redis缓存刷新器"""
+
+ def __init__(self):
+ self.redis_client = None
+
+ def connect_redis(self):
+ """连接Redis服务器"""
+ try:
+ # 尝试导入redis库
+ import redis
+ self.redis_client = redis.Redis(
+ host=REDIS_HOST,
+ port=REDIS_PORT,
+ password=REDIS_PASSWORD,
+ decode_responses=True
+ )
+ # 测试连接
+ self.redis_client.ping()
+ return True
+ except ImportError:
+ print("错误: 未安装redis库,请使用 'pip install redis' 安装")
+ return False
+ except Exception as e:
+ print(f"连接Redis失败: {str(e)}")
+ return False
+
+ def refresh_all_redis(self):
+ """刷新所有Redis数据库"""
+ try:
+ if not self.redis_client:
+ if not self.connect_redis():
+ return False, "无法连接Redis服务器"
+
+ # 获取所有数据库数量
+ try:
+ # 尝试获取配置信息
+ config = self.redis_client.config_get('databases')
+ db_count = int(config.get('databases', 16))
+ except:
+ # 如果无法获取配置,默认使用16个数据库
+ db_count = 16
+
+ refreshed_dbs = 0
+ total_keys = 0
+
+ # 遍历所有数据库并刷新
+ for db_index in range(db_count):
+ try:
+ # 切换到指定数据库
+ temp_client = self.redis_client.connection_pool.get_connection()
+ temp_client.send_command('SELECT', db_index)
+ temp_client.read_response()
+
+ # 获取当前数据库的key数量
+ temp_client.send_command('DBSIZE')
+ key_count = temp_client.read_response()
+
+ if key_count > 0:
+ # 清空当前数据库
+ temp_client.send_command('FLUSHDB')
+ temp_client.read_response()
+ refreshed_dbs += 1
+ total_keys += key_count
+ print(f"已刷新数据库 {db_index}: 清除了 {key_count} 个键")
+
+ self.redis_client.connection_pool.release(temp_client)
+
+ except Exception as e:
+ print(f"刷新数据库 {db_index} 时出错: {str(e)}")
+ continue
+
+ return True, f"成功刷新 {refreshed_dbs} 个Redis数据库,共清除 {total_keys} 个键"
+
+ except Exception as e:
+ return False, f"刷新Redis缓存时发生错误: {str(e)}"
+
class DatabaseUpdater(QThread):
"""数据库更新器类,运行在单独的线程中"""
@@ -75,6 +160,7 @@
self.updaters = []
self.log_records = []
self.is_running = True
+ self.redis_refresher = RedisRefresher()
def run(self):
"""主运行方法"""
@@ -105,9 +191,9 @@
# 创建数据库更新器实例
self.updaters = []
for _, row in df_filtered.iterrows():
- project, host, database, user, password = row[:5]
- self.log_signal.emit(f"准备处理项目:{project} | 数据库:{database}")
- updater = ProjectUpdater(project, host, database, user, password)
+ project, host, port, database, user, password = row[:6]
+ self.log_signal.emit(f"准备处理项目:{project} | 数据库:{database} | 端口:{port}")
+ updater = ProjectUpdater(project, host, database, user, password, port)
self.updaters.append(updater)
# 执行更新任务
@@ -139,6 +225,14 @@
self.log_signal.emit(f"所有更新日志已保存至 {DEFAULT_LOG_CSV_PATH}")
else:
self.log_signal.emit("无任何更新记录生成")
+
+ # 数据库更新完成后,自动刷新Redis缓存
+ self.log_signal.emit("开始刷新Redis缓存...")
+ success, message = self.redis_refresher.refresh_all_redis()
+ if success:
+ self.log_signal.emit(f"✅ {message}")
+ else:
+ self.log_signal.emit(f"❌ {message}")
except Exception as e:
self.error_signal.emit(f"运行过程中发生错误: {str(e)}")
@@ -185,12 +279,13 @@
class ProjectUpdater:
"""单个项目更新器"""
- def __init__(self, project, host, database, user, password):
+ def __init__(self, project, host, database, user, password, port=3306):
self.project = project
self.host = host
self.database = database
self.db_user = user
self.db_password = password
+ self.port = port
self.updated_users = []
self.log_records = []
@@ -199,7 +294,7 @@
try:
conn = mysql.connector.connect(
host=self.host,
- port=3306,
+ port=self.port,
user=self.db_user,
password=self.db_password,
database=self.database,
--
Gitblit v1.9.1