Mysql用户登录日志实现

流程概述

本文将教会刚入行的开发者如何实现MySQL用户登录日志功能。下面是实现该功能的步骤:

步骤 描述
1 创建数据库表
2 创建用户登录记录表
3 编写用户登录日志插入代码
4 编写用户登录验证代码

创建数据库表

首先,我们需要创建一个数据库用于存储用户登录日志。假设我们的数据库名为login_log

CREATE DATABASE login_log;
USE login_log;

创建用户登录记录表

接下来,我们需要创建一个表用于存储用户登录日志。我们可以创建一个名为user_login_log的表,包含以下字段:

  • id: 登录记录的唯一标识,使用自增主键
  • user_id: 登录用户的ID
  • login_time: 登录时间
  • login_status: 登录状态,成功或失败

以下是创建user_login_log表的代码:

CREATE TABLE user_login_log (
  id INT PRIMARY KEY AUTO_INCREMENT,
  user_id INT,
  login_time DATETIME,
  login_status ENUM('success', 'failure')
);

编写用户登录日志插入代码

当用户登录成功或失败时,我们需要向user_login_log表中插入一条记录。下面是一个示例代码,用于将登录日志插入到数据库中:

import mysql.connector

def insert_login_log(user_id, login_status):
    db = mysql.connector.connect(
      host="localhost",
      user="yourusername",
      password="yourpassword",
      database="login_log"
    )

    cursor = db.cursor()
    sql = "INSERT INTO user_login_log (user_id, login_time, login_status) VALUES (%s, NOW(), %s)"
    val = (user_id, login_status)
    cursor.execute(sql, val)

    db.commit()

    print(cursor.rowcount, "record inserted.")

insert_login_log(123, 'success')

以上代码使用了mysql.connector库连接到MySQL数据库,并将登录日志插入到user_login_log表中。你需要将yourusernameyourpassword替换为你的MySQL用户名和密码。

编写用户登录验证代码

最后,我们需要编写用户登录验证的代码,当用户登录时进行验证,并记录登录日志。以下是一个示例代码:

import mysql.connector

def login(user_id, password):
    db = mysql.connector.connect(
        host="localhost",
        user="yourusername",
        password="yourpassword",
        database="yourdatabase"
    )

    cursor = db.cursor()
    sql = "SELECT * FROM users WHERE user_id = %s AND password = %s"
    val = (user_id, password)
    cursor.execute(sql, val)

    user = cursor.fetchone()

    if user:
        print("Login successful.")
        insert_login_log(user_id, 'success')
    else:
        print("Login failed.")
        insert_login_log(user_id, 'failure')

login(123, 'password')

以上代码首先连接到MySQL数据库,然后执行用户登录验证查询。如果查询结果存在,则登录成功,否则登录失败。无论登录是否成功,都会插入一条登录日志记录。

你需要将yourusernameyourpasswordyourdatabase替换为你的MySQL用户名、密码和数据库名。

类图

classDiagram
    class Database {
        + connect()
        + disconnect()
        + executeSQL()
    }

    class UserLoginLog {
        - user_id : int
        - login_time : datetime
        - login_status : enum
    }

    class User {
        - user_id : int
        - password : string
    }

    class LoginService {
        + login()
        + insertLoginLog()
    }

    Database ..> UserLoginLog
    Database ..> User
    LoginService ..> Database
    LoginService ..> User
    LoginService ..> UserLoginLog

状态图

stateDiagram
    [*] --> LoggedOut
    LoggedOut --> LoggingIn: login()
    LoggingIn --> LoggedIn: successful login
    LoggingIn --> LoggedOut: failed login
    LoggedIn --> LoggedOut: logout()
    state LoggedOut {
        [*] --> idle
        idle --> [*]
    }
    state LoggingIn {
        [*] --> authenticating
        authenticating --> [*]
    }
    state LoggedIn {
        [*] --> active
        active --> [*]
    }

以上就是实现MySQL用户登录日志功能的流程以及相关代码。通过这些步骤,你可以轻松地添加用户登录