Python3.6 20个小程序入门(三)
需求:将(第二题中)生成的 200 个激活码(或者优惠券)保存到 MySQL 关系型数据库中。
分析:第二题中使用uuid生成了128位的唯一编码,但是这种编码在客户输入时及其繁琐,目前社会上常使用6位——8位的激活码是怎么做的呢?其实很简单,首先通过标准库string生成包含0~9,a~z,A~Z的一个字符串,然后使用标准库中随机选取的功能即可完成。另外互联网上这道题的解决中出现MySQLdb三方库,可是我使用的是Python3.6查询资料发现MySQLdb只支持到2.*。因此不能使用它,Python3提供了替换的方案——pymysql三方库可以满足需求。
安装pymysql
pip install pymysql
源代码:
#-*- coding:utf-8-*-
#生成邀请码功能
import pymysql
import string,random
def generateCode(n):
r=[]
s=string.digits+string.ascii_letters
for i in range(200):
t=''
for j in range(n):
t+=random.choice(s)
r.append(t)
return r
#存入mysql数据库功能
conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='dan81dan', db='pythontest', charset='utf8')
cursor = conn.cursor()
r = generateCode(8)
sql = "INSERT INTO `code1` (`id`,`code`) VALUES(%s,%s)"
for i in range(200):
cursor.execute(sql,(i+1,r[i]))
conn.commit()
cursor.close()
conn.close()
本代码中关于数据库插入的代码中
sql = "INSERT INTO `code1` (`id`,`code`) VALUES(%s,%s)"
坑:code1 、id 、code上边不是单引号而是撇(数字1左边那个按钮)