Python 趣味练习- 保存激活码到mysql和redis

今天接着作练习,题目出自 https://github.com/Yixiaohan/show-me-the-codepython



第 0001 题: 作为 Apple Store App 独立开发者,你要搞限时促销,为你的应用生成激活码(或者优惠券),使用 Python 如何生成 200 个激活码(或者优惠券)?mysql

第 0002 题: 将 0001 题生成的 200 个激活码(或者优惠券)保存到 MySQL 关系型数据库中。ios

第 0003 题: 将 0001 题生成的 200 个激活码(或者优惠券)保存到 Redis 非关系型数据库中。git


实现的代码以下所示:github

生成激活码的模块uuid,这里可使用uuid1,4,5等等,主要区别是不一样的加密算法和生成因子,我这里使用uuid4,就是纯随机的redis

数据库的操做我是经过pymysql实现的。基本操做能够参考 http://beanxyz.blog.51cto.com/5570417/1871039 算法

redis的操做是经过redis模块实现的。基本操做能够参考http://beanxyz.blog.51cto.com/5570417/1870139sql


#!/usr/bin/env python
#! -*- coding:utf-8 -*-
# Author: Yuan Li

import uuid
import pymysql
import redis


def generate_key(num):
    li=[]
    for i in range(num):
        #uuid4是随机生成的验证码
        S = uuid.uuid4()
        valuekey = str(S)
        li.append(valuekey)
    return li
    
def save_db(keys):
#绑定数据库和表
    conn = pymysql.connect(host='sydnagios', port=3306, user='yli', passwd='yli', db='test')
    #经过游标来执行sql语句
    cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
    for valuekey in keys:
    # 把值插入表中
        cursor.execute("insert into Code(serial) value (%s)", (valuekey))
    conn.commit()
    # 查询一下表的结果
    cursor.execute('select * from Code')
    # 输出结果
    row = cursor.fetchall()
    for item in range(len(row)):
        print(row[item])
    cursor.close()
    conn.close()
import  redis
def save_redis(keys):
    r = redis.Redis(host='sydnagios', port=6379)
    for item in keys:
        r.lpush('list1',item)
if __name__ == '__main__':
    li=generate_key(20)
    save_db(li)
    save_redis(li)


执行脚本的效果:数据库

控制台缓存

wKioL1ne-o2yJhZZAABC7huunIU285.png


redis缓存

wKiom1ne_USRjueTAABCWVAs6M4663.png


mysql数据库

wKioL1ne-o2TRPenAAA3FYU7vVA513.png

相关文章
相关标签/搜索