第 0002 题: 将 0001 题生成的 200 个激活码(或者优惠券)保存到 MySQL 关系型数据库中。
涉及的内容:python操纵MySQL数据库,推荐慕课网的相关课程;
作业代码如下:
#coding:utf-8 import pymysql import random,string conn=pymysql.Connect( host='127.0.0.1', port=3306, user='root', passwd='YlcSQL', db='imooc', charset='utf8' ) cursor=conn.cursor() def create_sql(): try: sql_create="CREATE TABLE IF NOT EXISTS \ coupon200(Id INT PRIMARY KEY AUTO_INCREMENT,Coupon VARCHAR(25))" cursor.execute(sql_create) except Exception as e: raise Exception("创建失败") def get_coupon(nums,lens): # nums:生成总数 # lens:激活码长度 try: sam = string.ascii_letters + string.digits for x in range(nums): coupon=random.sample(sam, lens) coupon="".join(coupon) # 合并 cursor.execute("INSERT INTO coupon200(Coupon) VALUES(%s);",[coupon]) except Exception as e: raise Exception("存储失败") if __name__ == '__main__': create_sql() try: get_coupon(200, 20) conn.commit() except Exception as e: print "出现问题:"+str(e) finally: conn.close()
代码中把01题又重新做了一边,但是这就不能保证是我之前的优惠券了;
正确的做法该是将上次的优惠券存入文档中然后再读取;
https://github.com/Show-Me-the-Code/python/blob/master/BrambleXu/play2/play2.py
这个答案还对表做了一个预判,but我没有;
p.s. 这里遇到一个MySQL排序的问题,1-10,删除1-10后,编号是从11开始,有什么办法可以让他重新排序呢?