第 0001 题: 做为 Apple Store App 独立开发者,你要搞限时促销,为你的应用生成激活码(或者优惠券),使用 Python 如何生成 200 个激活码(或者优惠券)?
第 0002 题: 将 0001 题生成的 200 个激活码(或者优惠券)保存到 MySQL 关系型数据库中。
代码如下
import random
import string
import mysql.connector
import time
def rndchar():
return ''.join(random.choices(string.ascii_lowercase+string.ascii_uppercase+string.digits,k=20))
def insert_code(cursor,n,codes):
#python中%s作为占位符,数据库语言不发生变化
cursor.execute('insert into code(id,code) values (%s,%s)',(n,codes))
if __name__ == '__main__':
starttime = time.time()
conn = mysql.connector.connect(host='***',user='root',password='123',database='hx')
cursor = conn.cursor()
cursor.execute('create table code_1(id varchar(20), code varchar(150))')
for i in range(200):
codes=rndchar()
insert_code(cursor,i,codes)
conn.commit()
cursor.close()
endtime = time.time()
print(endtime-starttime)
产生随机数引入random模块。可以通过char(randint(n,m))转化成字符串,但是这边采用了数字和大小写字符串的随机码,所以用了choices。
def rndchar():
return ''.join(random.choices(string.ascii_lowercase+string.ascii_uppercase+string.digits,k=6))
采用加密生成随机码
def rndchar_secret():
return ''.join(secrets.choice(string.ascii_lowercase+string.ascii_uppercase+string.digits) for _ in range(4))
一开始写的逻辑,每插入一条信息就提交一下,导致时间耗费很多,用time()记录了一下,200个随机码大概要7.73秒。
然后我把提交事务放在了for循环结束后,用时2.93秒。提高了近5秒。
版权声明:本文为博主原创文章,未经博主允许不得转载。
https://blog.youkuaiyun.com/weixin_43248061/article/details/84140786