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()