python--用户登录
目的:实现用户登录功能
具体实现:
1.信息从数据库导出
2.账号密码验证
3.可以转入注册
4.注册数据传入数据库
5.注册非空唯一验证
6.失败三次重新进入登录界面
代码:
# 导入数据库函数 import pymysql # 导入正则 import re # 用户登录 class usre_login(): # 获得数据库对象 def __init__(self): # 获得数据库链接对象 self.mysql_account = pymysql.connect('localhost','root','123','user_info') # ip地址,账号,密码,库名 # 获得数据库游标对象 self.mysql_cur = self.mysql_account.cursor() # 用户登录函数 def login(self): while True: print(''' 用户登录 1.登录 2.注册''') choose=input('选择[输入序号]:>> ') # 登录 if choose=='1': print('=======登录======') # 输入账号 account = input('请输入账号[10位以内字母]:') # 账号存在验证 # sql 查询语句 sql_ver_account = "select * from account_password where account=(\'{0}\')".format(account) # 执行语句 self.mysql_cur.execute(sql_ver_account) # 返回全部数据 user_info=self.mysql_cur.fetchall() if user_info == (): input('账号不存在,任意键返回注册') else: number = 0 # 限定三次 while number<3: # 输入密码 password = input('请输入密码[6位数字]:') # sql 查询语句 sql_ver_account = "select * from account_password where account=(\'{0}\') and password=({1})".format(account,password) # 执行语句 self.mysql_cur.execute(sql_ver_account) # 返回全部数据 user_info=self.mysql_cur.fetchall() if user_info == (): number += 1 input('密码错误,任意键重新输入,还有{0}次机会'.format(4-number)) continue else: input('登录成功') break # 注册 elif choose=='2': while True: print('=======注册======') # 输入账号 account = input('请输入账号[10位以内字母]:') # 账号唯一验证: # sql 查询语句 sql_ver_account = "select * from account_password where account=(\'{0}\')".format(account) # 执行语句 self.mysql_cur.execute(sql_ver_account) # 返回全部数据 user_info=self.mysql_cur.fetchall() if user_info == (): # 输入密码 password = input('请输入密码[6位数字]:') # 账号正则表达式 ver_account = re.compile(r"^[a-zA-Z]{1,10}$") # 密码正则表达式 ver_password = re.compile(r"^\d{6}$") # 验证账号和密码 失败返回None if ver_account.match(account) and ver_password.match(password): # 账号密码合格保存数据库 # sql 增加语句 sql_info = 'insert into account_password values(\'{0}\',{1})'.format(account,password) # 执行语句 self.mysql_cur.execute(sql_info) # 提交数据库 self.mysql_account.commit() # 关闭数据库 self.mysql_account.close() input('注册成功,任意键返回登录') break else: input('输入不正确,任意键返回重新输入') continue else: input('账号重复,任意键返回') break else: input('输入不正确,任意键重新输入') if __name__ =='__main__': # 实例化对象 login_user = usre_login() login_user.login()
问题: 1.代码重复率有点高
2.SQL语句相关问题