一、用户注册与登录
1 import pymysql,hashlib,datetime
2
3 #操作数据
4 def op_mysql(sql,many=True):
5 db_info = {'user': 'xmb', 'password': '123456', 'host': '127.0.0.0', 'db': 'xmb', 'port': 3306,
6 'charset': 'utf8', 'autocommit': True}
7 try:
8 conn = pymysql.connect(**db_info) #建立连接
9 except Exception as e:
10 print("数据库连接失败",e)
11 return "数据库连接失败"
12 cur = conn.cursor(pymysql.cursors.DictCursor) #建立游标
13 try:
14 cur.execute(sql) #执行sql
15 except Exception as e:
16 print("sql错误,%s"%sql)
17 result = "sql错误,%s"%sql
18 else:
19 if many:
20 result = cur.fetchall() #fetchall返回的是列表
21 else:
22 result = cur.fetchone() #fetchone返回的是字典
23 finally:
24 cur.close()
25 conn.close()
26 return result
27
28 #加密
29 def md5(s,salt=''):
30 new_s = str(s) + salt
31 m = hashlib.md5(new_s.encode())
32 return m.hexdigest()
33
34 #用户注册
35 for i in range(3):
36 username = input('username:').strip()
37 pwd = input('password:').strip()
38 cpwd = input('password:').strip()
39 if username =='' or pwd == '' or cpwd =='':
40 print('输入不能为空')
41 elif pwd !=cpwd:
42 print("两次密码输入不一致")
43 else:
44 sql = "select username from app_myuser where username = '%s';"%username
45 if op_mysql(sql):
46 print('用户已被注册')
47 else:
48 new_password = md5(pwd)
49 insert_sql = 'insert into app_myuser(username,passwd) values ("%s",%s);'%(username,pwd)
50 op_mysql(insert_sql)
51 print("注册成功")
52 break
53
54
55 #用户登录
56 for i in range(6):
57 username = input("username:").strip()
58 pwd = input("password:").strip()
59 if username =='' or pwd =='':
60 print("用户名或密码输入不能为空")
61 else:
62 new_password = md5(pwd)
63 sql = 'select username,passwd,error_count from app_myuser where username="%s";'%username
64 reslut = op_mysql(sql,False)
65 if reslut:
66 if reslut.get('error_count') > 5:
67 print('输入错误次数大于5次,账号被冻结')
68 elif new_password == reslut.get('passwd'):
69 print('登录成功 %s'%datetime.datetime.today())
70 up_sql = 'update app_myuser set error_count = 0 where username = "%s";'%username
71 op_mysql(up_sql)
72 break
73 else:
74 up_sql = 'update app_myuser set error_count = error_count + 1 where username = "%s";'%username
75 op_mysql(up_sql)
76 print("账号或密码错误")
77 else:
78 print('用户不存在')