'''
做為 Apple Store App 獨立開發(fā)者彤枢,你要搞限時促銷,為你的應(yīng)用生成激活碼(或者優(yōu)惠券),
使用 Python 如何生成 200 個激活碼(或者優(yōu)惠券)?
將 生成的 200 個激活碼(或者優(yōu)惠券)保存到 MySQL 關(guān)系型數(shù)據(jù)庫中钉汗。
將生成的 200 個激活碼(或者優(yōu)惠券)保存到 Redis 非關(guān)系型數(shù)據(jù)庫中羹令。
'''
生成200個隨機字符串,XXXX-XXXX-XXXX-XXXX
'''
a-z:97-122
A-Z:65-90
0-9:48-57
'''
import random
import pymysql
import redis
class randomChar(object):
"""docstring for randomChar"""
def randomString(self):
list = []
for i in range(48,58):
list.append(i)
for i in range(65,91):
list.append(i)
for i in range(97,123):
list.append(i)
ranS = ''
for j in range(4):
for i in range(4):
index = random.choice(list)
ranS += chr(index)
if j != 3:
ranS += '-'
return ranS
連接MySql數(shù)據(jù)庫
class MySqlOperation(object):
#mysqlRedis
def __init__(self):
self.conn = pymysql.connect(host='localhost',
user='root',
password='11111111',
db='reptile',
port=3306,
charset='utf8',
cursorclass=pymysql.cursors.DictCursor)
self.cur = self.conn.cursor()
def op_sql(self, params):
try:
self.cur.execute(params)
self.conn.commit()
return True
except pymysql.Error as e:
print('MySQL Error %d:%s' % (e.args[0], e.args[1]))
return False
def insertCode(self, code):
sql = "insert into mysqlRedis(code) values('%s')" % code
if not self.op_sql(sql):
print('insert error %s' % code)
else:
print('success')
def selectCode(self):
sql = "select code from mysqlRedis"
try:
self.cur.execute(sql)
self.cur.scroll(0, mode='absolute') # 光標回到初始位置
results = self.cur.fetchall() # 返回游標中所有結(jié)果
except pymysql.Error as e:
results = 'sql0001' # 數(shù)據(jù)庫執(zhí)行失敗
print("MySQL Error %d: %s" % (e.args[0], e.args[1]))
finally:
return results
連接redis數(shù)據(jù)庫
class RedisOperation(object):
def __init__(self):
pool = redis.ConnectionPool(host='localhost', port=6379, decode_responses=True)
self.r = redis.Redis(connection_pool=pool)
向mysql中插入數(shù)據(jù)
for i in range(200):
randC = randomChar()
code = randC.randomString()
operation = MySqlOperation()
operation.insertCode(code)
查詢mysql數(shù)據(jù)并存儲在redis中
operation = MySqlOperation()
ro = RedisOperation()
r = ro.r
r.delete('codes')
for code in operation.selectCode():
r.sadd('codes', code['code'])
print(r.smembers('codes'))