第三题:将 0001 题生成的 200 个激活码(或者优惠券)保存到 MySQL 关系型数据库中
一、分析问题
由于是要把数据保存到mysql中,这里就需要用到Python的怕pymysql模块,并且先生成再存入,
注意:
1.这里操作MySQL的时候,先写入一条,获得id,然后再更新该条记录。
2.创建的验证码的格式为---'16进制的sql_id' + 'L' + 随机码
3.电脑端MySQL server的安装
二、代码示例
#coding:utf-8
import pymysql
import random
import datetime
import string
def opt_mysql(num): #连接数据库
conn = pymysql.connect(host='localhost',port =3306,user='root',passwd='123456',db ='user')
cur = conn.cursor() #通过获取到的数据库连接conn下的cursor()方法来创建游标
drop_table ='''DROP TABLE IF EXISTS python''' #如数据库中存在此Python表格则删除该表格
cur.execute(drop_table)
create_table =''' #创建数据表
create table python(
id INT PRIMARY KEY NOT NULL AUTO_INCREMENT,
codes VARCHAR(64) NOT NULL,
create_time VARCHAR(64) NOT NULL);
'''
cur.execute(create_table)
for iin range(num):
create_time = datetime.datetime.now() #获取当前的时间
insert_table ='''INSERT INTO python(codes,create_time) VALUES('TestCode','%s')''' % create_time #插入当前时间值
cur.execute(insert_table)
id = conn.insert_id()
code = create_code(id)
update_table ='''UPDATE python SET codes = '%s' WHERE id = %s'''% (code,id) #插入更新数据
cur.execute(update_table)
conn.commit()
cur.close()
conn.close()
def create_code(id,length=15): #格式转换
code =hex(int(id))+'L'
length_rdm = length -len(code)
random_num =''.join(random.sample(string.letters + string.digits,length_rdm))
return code + random_num
if __name__ =='__main__': #主程序
opt_mysql(100)
三、运行结果