Python每日一题之0001&0002

这篇博客探讨了如何使用Python生成200个激活码,并将其高效地存储到MySQL数据库中。通过引入random模块和使用choices方法生成包含数字和字母的随机码,作者比较了两种不同的数据库提交策略,发现批量提交显著减少了执行时间,从最初的7.73秒缩短到2.93秒。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第 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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值