Python读书笔记-每日篇-20190222|激活码生成器(redis存储)

问题描述: 做为 Apple Store App 独立开发者,你要搞限时促销,为你的应用生成激活码(或者优惠券),使用 Python 如何生成 200 个激活码(或者优惠券),并将生成的激活码保存到Redis中?

需求分析:

  1. 需求同《Python读书笔记-每日篇-20190219|激活码生成器
  2. 激活码存储在Redis中

代码编写:

      编写Redis连接API:

#! /usr/bin/env python3
# Filename : myredis.py

conf = {
    'HOST':'192.168.9.130',
    'PORT':6379,
    'DB':0
}

import redis

class myredis(object):
    #redis连接池
    redis_pool = ''
    def __init__(self, host='127.0.0.1',port=6379,db=0):
        try:
            self.redis_pool = redis.ConnectionPool(host=host,port=port,db=db,decode_responses=True)
        except Exception as e:
            print("redis connection error:",e)
            raise
    
    def insert_serial(self,serial):
        REDIS_ID = 'user:gifts'
        try:
            r = redis.StrictRedis(connection_pool = self.redis_pool)
            r.sadd(REDIS_ID,serial)
        except Exception as e:
            print("redis instance create error:",e)
            raise
    def query_serial(self,serial):
        REDIS_ID = 'user:gifts'
        try:
            r = redis.StrictRedis(connection_pool = self.redis_pool)
            if r.sismember(REDIS_ID,serial):
                return True
            return False
        except Exception as e:
            print("redis instance create error:",e)
            return True
if __name__ == "__main__":
    myrs = myredis(conf['HOST'],conf['PORT'],conf['DB'])
    myrs.insert_serial('1')        

产生需要的激活码generater3.py

#! /usr/bin/env python3
# Filename : generator.py
 
import string,random
from com.lreis.daily import myredis
from com.lreis.random.random_test import rand
 
#产生随机码的域
field = string.ascii_letters + string.digits     
      
class generator(object):
    #激活码
    data = []
    #本次激活码需要数量
    need_num = 0
    #本次激活码生成数量
    cur_num = 0
    #激活码长度需求
    length = 0
 
    def __init__(self, length =16,need_num=100):
        self.length = length
        self.need_num = need_num
 
    def generate(self):
        mr = myredis.myredis(myredis.conf['HOST'],myredis.conf['PORT'],myredis.conf['DB'])
        while self.cur_num < self.need_num:
            #生成一个随机码
            rand = self.__get_one() 
            if mr.query_serial(rand):
                continue
            mr.insert_serial(rand)
            self.data.append(rand)
            self.cur_num +=1
       
        return self.data
    
    def __get_one(self):
        rand = ''.join(random.sample(field,self.length)) 
        while(rand in self.data):
            rand = random.sample(field,self.length)
        if __name__ == "__main__":
                print("[激活码]=>%s"%(str(rand)))
        return rand
            
if __name__ == "__main__":
    generator = generator()
    #生成100个激活码
    datas = generator.generate()
    print(datas)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值