【Python】实现用户登录注册Demo

目录

  • 运行环境
  • 实现代码
      • 新建login.py
  • 数据库表
      • user表:存放用户名及密码
      • user_locked表:存放被锁定的用户用户名
  • 运行测试
      • 注册
      • 登录
      • 锁定
      • 锁定用户登录

学习Python的第一个Demo程序,实现用户登录、注册,并对输错密码超过三次的用户进行锁定操作。有错误及不足的地方欢迎评论斧正!一起进步!

运行环境

Python:3.6.5
Mysql:5.7
PyMySQL:0.9.3

实现代码

新建login.py

# -*- coding:utf-8 -*-


import sys
import pymysql

# 连接数据库
conn = pymysql.connect("Mysql主机", "Mysql用户", "用户密码", "数据库名")
cur = conn.cursor()

# 新增用户数据写入
def db_insert_user(username, password):
    sql = "insert into user (username, password) values ('%s', '%s')" % (username, password)
    cur.execute(sql)
    conn.commit()

# 锁定用户数据写入
def db_insert_locked(username):
    sql = "insert into user_locked (username) values ('%s')" % username
    cur.execute(sql)
    conn.commit()

# 验证用户是否存在
def db_check_username(username):
    sql = "select username from user where username = '%s'" % username
    cur.execute(sql)
    result = cur.fetchall()
    if len(result) == 0:
        return True
    else:
        return False

# 验证用户是否锁定
def db_check_locked(user_input):
    sql = "select * from user_locked where username = '%s'" % user_input
    cur.execute(sql)
    user_locked_existed = cur.fetchall()
    if len(user_locked_existed) == 0:
        pass
    else:
        if user_input == user_locked_existed[0][0]:
            return True
        else:
            return False

# 验证输入密码是否正确
def db_check_password(username, pw_input):
    sql = "select password from user where username = '%s'" % username
    cur.execute(sql)
    pw_existed = cur.fetchall()
    if pw_existed[0][0] == pw_input:
        return True
    else:
        return False

# 新用户注册
def user_register(username):
    username_new = username
    password_new = input("New Password Here:")
    db_insert_user(username_new, password_new)


def login():
    retry_limits = 3
    username = input("Please Enter Username: ")
    user = db_check_username(username)
    if user:
        print('Username: %s is not exsited,Register now?' % username)
        user_register(username)

    while retry_limits > 0:
        if db_check_locked(username):
            print('User %s has been locked!' % username)
            sys.exit(1)

        password = input("Please Enter Password:")

        if db_check_password(username, password):
            print('Welcome %s ,Login Successful!' % username)
            sys.exit(0)
        else:
            if retry_limits == 1:
                db_insert_locked(username)
                print('You\'ve try too many times,User %s is Locked!' % username)
                sys.exit(0)
            else:
                retry_limits = retry_limits - 1
                print('Sorry,User %s Wrong, %d Chances Left' % (username, retry_limits))
    conn.close()


if __name__ == '__main__':
    login()

数据库表

user表:存放用户名及密码

【Python】实现用户登录注册Demo_第1张图片

user_locked表:存放被锁定的用户用户名

user_locked表

运行测试

注册

【Python】实现用户登录注册Demo_第2张图片

登录

【Python】实现用户登录注册Demo_第3张图片

锁定

【Python】实现用户登录注册Demo_第4张图片

锁定用户登录

【Python】实现用户登录注册Demo_第5张图片

你可能感兴趣的:(Python学习)