From b863ac4c8cda966e3d6ff9107a9840db4541483b Mon Sep 17 00:00:00 2001 From: wangsiyuan <2392948297@qq.com> Date: Mon, 25 Dec 2023 16:43:47 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20database=5Fmanager.py?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- db/database_manager.py | 63 ++++++++++++++++++++++++++++++------------ 1 file changed, 45 insertions(+), 18 deletions(-) diff --git a/db/database_manager.py b/db/database_manager.py index 7ec4cef..b8639b3 100644 --- a/db/database_manager.py +++ b/db/database_manager.py @@ -1,28 +1,55 @@ import pymysql -from config import DB_CONFIG +from db.connection import MySQLPool +import bcrypt class DatabaseManager: def __init__(self): - self.connection = pymysql.connect(**DB_CONFIG) + # 使用MySQLPool初始化数据库连接池 + self.pool = MySQLPool() def fetch(self, query, params=None): - # 实现查询逻辑 - pass + conn = self.pool.get_connection() + try: + cursor = conn.cursor() + cursor.execute(query, params or ()) + result = cursor.fetchall() + return result + finally: + cursor.close() + conn.close() - def insert(self, query, params=None): - # 实现插入逻辑 - pass + def execute(self, query, params=None): + conn = self.pool.get_connection() + try: + cursor = conn.cursor() + cursor.execute(query, params or ()) + conn.commit() + return cursor.rowcount + finally: + cursor.close() + conn.close() - def update(self, query, params=None): - # 实现更新逻辑 - pass + def user_exists(self, phone_number): + sql = "SELECT 1 FROM user WHERE phone_number=%s LIMIT 1" + result = self.fetch(sql, (phone_number,)) + return len(result) > 0 - def delete(self, query, params=None): - # 实现删除逻辑 - pass + def insert_user(self, user): + sql = """ + INSERT INTO user (nickname, phone_number, password, identity, is_active) + VALUES (%s, %s, %s, %s, %s) + """ + data = (user.nickname, user.phone_number, user.password, user.identity, user.is_active) + # print(data) + return self.execute(sql, data) - def close(self): - # 关闭数据库连接 - self.connection.close() - -# 可能还包含其他数据库操作方法... + def valid_login(self, phone_number, password_attempt): + # SQL查询获取用户的哈希密码 + sql = "SELECT password FROM user WHERE phone_number=%s LIMIT 1" + result = self.fetch(sql, (phone_number,)) + if result: + stored_hash = result[0]['password'] # 假设结果是密码字段 + # 使用bcrypt进行密码验证 + if bcrypt.checkpw(password_attempt.encode('utf-8'), stored_hash.encode('utf-8')): + return True # 密码匹配,登录成功 + return False # 密码不匹配或用户不存在,登录失败