随机生成200个8位验证码,并存入mysql数据库

生成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函数,以''连接起来


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值