赞
踩
(接上一篇文章: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 redis
import 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 pymysql import redis import random 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 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() 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}')
运行:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。