生成200个8位的验证码
# -*- coding: utf-8 -*-
import mysql.connector
import random,string
def readkey(num,length):
with open('C:/Users/Administrator/Desktop/randomnum.txt', 'w+') as fo:
for i in range(num):
chars = string.ascii_letters + string.digits
s = [random.choice(chars) for i in range(length)]
fo.write(''.join(s) + '\n')
with open('C:/Users/Administrator/Desktop/randomnum.txt', 'r') as fo:
keylist = fo.readlines()
return keylist
def storeinMysql(keylist):
try:
# 连接数据库
conn = mysql.connector.connect(user='root', password='password', db = 'mysql')
cursor = conn.cursor()
except BaseException as e:
print('connection failed ')
else:
try:
# 若没有database randnum,则创建一个名为randnum的database
cursor.execute('create database if not exists randnum')
cursor.execute('use randnum')
# 若没有表,则创建一个名为randkey的表,包含randkey和name两个字段
cursor.execute('''create table if not exists randkey3(
keynum varchar(20) primary key,name varchar(20))''')
for line in keylist:
# print (line)
cursor.execute('insert into randkey3 (keynum,name) values (%s, %s)', [line, 'cathy'])
conn.commit()
except BaseException as e:
print(e)
finally:
cursor.close()
conn.close()
if __name__ == '__main__':
storeinMysql(readkey(200,8))
在生成验证码的时候,可以使用uuid4,直接生成list,这样不用存文件,更简洁
转自github的ilcyb的答案
import uuid
def generateActivationCode(num):
codeList = []
for i in range(num):
code = str(uuid.uuid4()).replace('-','').upper()
while code in codeList:
code = str(uuid.uuid4()).replace('-','').upper()
codeList.append(code)
return codeList
fo.write(''.join(s) + '\n')
由于s取出来为一个list,需要用join函数,以''连接起来