python-mysql-redis

'''
做為 Apple Store App 獨立開發者,你要搞限時促銷,為你的應用生成激活碼(或者優惠券),
使用 Python 如何生成 200 個激活碼(或者優惠券)?
將 生成的 200 個激活碼(或者優惠券)保存到 MySQL 關系型數據庫中。
將生成的 200 個激活碼(或者優惠券)保存到 Redis 非關系型數據庫中。
'''

生成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數據庫

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() # 返回游標中所有結果
        except pymysql.Error as e:
            results = 'sql0001' # 數據庫執行失敗
            print("MySQL Error %d: %s" % (e.args[0], e.args[1]))
        finally:
            return results

連接redis數據庫

class RedisOperation(object):
    def __init__(self):
        pool = redis.ConnectionPool(host='localhost', port=6379, decode_responses=True)
        self.r = redis.Redis(connection_pool=pool)

向mysql中插入數據

for i in range(200):
    randC = randomChar()
    code = randC.randomString()
    operation = MySqlOperation()
    operation.insertCode(code)

查詢mysql數據并存儲在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'))
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容