打通了MySQL的登录注册功能

登录注册

import pymysql


class MyDBHandle:
    def __init__(self):
        self.conn = pymysql.connect(
            host='127.0.0.1',
            port=3306,
            user='root',
            passwd='123456',
            db='day49',
            charset='utf8',
            autocommit=True
        )
        self.cursor = self.conn.cursor(pymysql.cursors.DictCursor)

    def _db_handle_select(self, *args):
        sql = 'select * from user where username=%s'
        res = self.cursor.execute(sql, args)
        if not res:
            return {}
        else:
            return self.cursor.fetchone()

    def _db_handle_insert(self, *args):
        sql = 'insert into user(username, password) values(%s, %s)'
        self.cursor.execute(sql, args)

    def login_interface(self, name, pwd):
        user_dict = self._db_handle_select(name)
        if not user_dict:
            return False, '用户名不存在'
        else:
            if pwd != user_dict.get('password'):
                return False, '用户名或密码错误'
        return True, '登录成功'

    def register_interface(self, name, pwd):
        user_dict = self._db_handle_select(name)
        if user_dict:
            return False, '用户名已经存在'
        self._db_handle_insert(name, pwd)
        return True, '注册成功'


class MyTest:

    def __init__(self, db_handle_obj):
        self.db_handle = db_handle_obj

    def run(self):
        while 1:
            cmd_list = [('登录', 'login'), ('注册', 'register')]
            for index, item in enumerate(cmd_list):
                print(index, item[0])
            cmd = input('请输入功能编号:').strip()
            if not cmd.isdigit() or int(cmd) not in range(len(cmd_list)):
                continue
            cmd_func = cmd_list[int(cmd)][1]
            if hasattr(self, cmd_func):
                func = getattr(self, cmd_func)
                func()

    def login(self):
        while 1:
            username = input('username>>:').strip()
            password = input('password>>:').strip()
            flag, msg = self.db_handle.login_interface(username, password)
            print(msg)
            if flag: break

    def register(self):
        while 1:
            username = input('username>>:').strip()
            password = input('password>>:').strip()
            re_pwd = input('re_pwd>>:').strip()
            if re_pwd != password:
                print('两次密码输入不一致')
                continue
            flag, msg = self.db_handle.register_interface(username, password)
            print(msg)
            if flag: break


if __name__ == '__main__':

    test = MyTest(MyDBHandle())
    test.run()
posted @ 2020-05-08 19:03  the3times  阅读(192)  评论(0)    收藏  举报