这次使用之前的 PyMysql 和 UUID 库实现验证码的生成,并插入到 Mysql 数据库的操作。
SQL
1CREATE DATABASE pydb;
2
3DROP TABLE IF EXISTS `code`;
4CREATE TABLE `code` (
5 `id` varchar(255) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL,
6 `code` varchar(255) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL,
7 PRIMARY KEY (`id`) USING BTREE
8) ENGINE = InnoDB CHARACTER SET = latin1 COLLATE = latin1_swedish_ci ROW_FORMAT = Compact;
9
10SET FOREIGN_KEY_CHECKS = 1;
此次生成验证码,使用 UUID 来生成,因为它可以生成唯一的 ID,为了简便,我们便用其充当验证码,并使用字典来盛装验证码。
为了便于我们检验是否生成了正确的验证码,便将字典中的数据格式化输出到控制台。
数据库中的 ID 字段我们使用 uuid1() 生成,code 字段我们使用 uuid4() 生成,这样两个字段互不冲突,保证了唯一性。下面上代码。
私信小编01 领取小编整理的电子书三百本~
1import pymysql
2import uuid
3
4codeList = dict() // 声明一个字典
5
6i = 1 // 为了保证字典 key 的唯一性而声明
7
8// 封装函数
9def generateActivationCode(num):
10 for i in range(num):
11 code = str(uuid.uuid4()).replace('-', '').upper() // 生成 code,并消去其中的 “-”。
12 codeList.update({'%d' % i: {'id': str(uuid.uuid1()), 'code': code}}) // 向字典添加数据
13 i = i + 1
14 return codeList
15
16generateActivationCode(10) // 函数调用
17
18// 遍历字典,格式化输出数据
19for (key, value) in codeList.items():
20 print(key, "\t", value['id'], "\t", value['code'])
21
22
23// 实例化数据库链接
24db = pymysql.connect(host="localhost",
25 user="root",
26 password="123456",
27 db="pydb")
28
29cursor = db.cursor() // 声明游标
30sql = "insert into code(id,code) values(%s,%s)"
31
32// 插入数据
33for (key, value) in codeList.items():
34 cursor.execute(sql, (value['id'], value['code']))
35 db.commit() // 提交事务
36
37// 关闭游标和数据库链接
38cursor.close()
39db.close()
控制台输出
10 846f2844-19c4-11ea-8b50-646e692658c5 CD6F1E7BDCF544D690D51A1397ADC9CC
21 846f7755-19c4-11ea-be2e-646e692658c5 17541BC466F541C5A93F87DB35E4F436
32 846f7756-19c4-11ea-b2e1-646e692658c5 197828A4F7E54067870F0216EBEED5F4
43 846f7757-19c4-11ea-ac56-646e692658c5 5ADDF5C92B3042AD822BAB26498009B2
54 846f7758-19c4-11ea-80e3-646e692658c5 EC1B6A2B8D274FE48E5507ABDB8BE9B4
65 846f7759-19c4-11ea-b7bc-646e692658c5 1AA45D4702024A59BE11F3DA053985A9
76 846f775a-19c4-11ea-b5a8-646e692658c5 661CED0282034316B3581B02F7FE47A7
87 846f775b-19c4-11ea-90a8-646e692658c5 CB62AFCD21D64818BD190673B5359EC3
98 846f775c-19c4-11ea-b5c2-646e692658c5 9EF7E725549A41D78AA6E36BCD332915
109 846f775d-19c4-11ea-9672-646e692658c5 0EBE13CD6A0A4FC88385BCA62EAC2DAE
本文来自投稿,不代表本人立场,如若转载,请注明出处:http://www.sosokankan.com/article/1333297.html