龙空技术网

进阶编程:编写登陆系统

南北不是东西 630

前言:

如今你们对“python写登录系统”可能比较注重,小伙伴们都想要分析一些“python写登录系统”的相关文章。那么小编在网摘上收集了一些对于“python写登录系统””的相关资讯,希望我们能喜欢,你们快快来了解一下吧!

(接上一篇文章:python 操作 mongo,MySQL,redis)

一.编写一个类

利用类来封装学生信息

class Student:    def __init__(self,studentId,name,age,sex,class_id):        self.studentId = studentId        self.name = name        self.age = age        self.sex = sex        self.class_id = class_id
if __name__ == '__main__':    studentId = input('请输入学号:')    name = input('请输入姓名:')

二.再利用 python 操作 mysql

import pymysql
db_config = {    'host':'127.0.0.1',    'port':3306,    'user':'admin',    'password':'qwe123',    'db':'coco',    'charset':'utf8'}conn = pymysql.connect(**db_config)cur = conn.cursor()
try:     sql = f'SELECT * FROM `student` WHERE `id`={studentId} AND `name`="{name}";'     cur.execute(sql)     res = cur.fetchone()  # 获取查询到的单条数据     if res:         now_student = Student(*res)     else:         print('账号或密码错误,登陆失败')         raise Exception	 except Exception as e:     conn.rollback()  # 如果执行sql语句出现了异常,则进行事务回滚     print(f'异常{e},已取消操作') else:     conn.commit()   # 确认没有问题,则进行事务提交     print('执行成功') finally:     # 无论是否成功执行完成之后都进行资源的释放     cur.close()  # 关闭游标对象     conn.close()   # 关闭连接对象 print(f'当前登录的用户是:{now_student.name}')

三.我们还可以设置验证码,就只要利用 python 控制 redis 即可使用验证码

import redisimport random
redis_config = {    'host': '127.0.0.1',    'port': 6379,    'db': 0,    'decode_responses':True}db = redis.StrictRedis(**redis_config)
if __name__ == '__main__':    studentId = input('请输入学号:')    name = input('请输入姓名:')    print('正在发送验证码。。。')    code = str(random.randint(1000,9999))    db.set(f'{studentId}:verification', code, ex=60)    verifications = input(f'(验证码为:{code})')    verification = input(f'请输入验证码:')

(上文中的 student 是 redis 文章中已编写好的一个关于学生信息的数据库中的表格,random 模块是打印随机数。)

四.全部编程

import pymysqlimport redisimport randomclass Student:    def __init__(self,studentId,name,age,sex,class_id):        self.studentId = studentId        self.name = name        self.age = age        self.sex = sex        self.class_id = class_iddb_config = {    'host':'127.0.0.1',    'port':3306,    'user':'admin',    'password':'qwe123',    'db':'coco',    'charset':'utf8'}conn = pymysql.connect(**db_config)cur = conn.cursor()redis_config = {    'host': '127.0.0.1',    'port': 6379,    'db': 0,    'decode_responses':True}db = redis.StrictRedis(**redis_config)if __name__ == '__main__':    studentId = input('请输入学号:')    name = input('请输入姓名:')    print('正在发送验证码。。。')    code = str(random.randint(1000,9999))    db.set(f'{studentId}:verification', code, ex=60)    verifications = input(f'(验证码为:{code})')    verification = input(f'请输入验证码:')    if verification != db.get(f'{studentId}:verification'):        print('验证码错误 ')        raise Exception    now_student = None    try:        sql = f'SELECT * FROM `student` WHERE `id`={studentId} AND `name`="{name}";'        cur.execute(sql)        res = cur.fetchone()  # 获取查询到的单条数据        if res:            now_student = Student(*res)        else:            print('账号或密码错误,登陆失败')            raise Exception    except Exception as e:        conn.rollback()  # 如果执行sql语句出现了异常,则进行事务回滚        print(f'异常{e},已取消操作')    else:        conn.commit()   # 确认没有问题,则进行事务提交        print('执行成功')    finally:        # 无论是否成功执行完成之后都进行资源的释放        cur.close()  # 关闭游标对象        conn.close()   # 关闭连接对象    print(f'当前登录的用户是:{now_student.name}')

运行:

标签: #python写登录系统 #python编写程序输出姓名学号