学python的第二十一天

生成激活码,连接数据库,并保存到数据库

1,生成激活码

# 1 生成激活码
import random  # 导入随机数模块
import os  # 导入os模块
import string  # 导入字符串模块def GenKey(length):  # 定义生成激活码函数chars = string.ascii_letters + string.digits  # 生成所有字母和数字return ''.join(random.choice(chars) for i in range(length))def SaveKey(content):  # 定义保存激活码函数f = open("key.txt", 'a')  # 打开文件,以追加模式写入f.write(content + "\n")  # 写入激活码f.close()  # 关闭文件if __name__ == '__main__':  # 判断是否是主程序for i in range(200):  # 循环200次value = GenKey(20)  # 生成20位的激活码print(value)  # 输出激活码SaveKey(value)  # 保存激活码
# **************************************************************************************

2,生成的激活码保存到sqlite3数据库

# 2 生成的激活码保存到sqlite3数据库
import random  # 导入随机数模块
import sqlite3  # 导入sqlite3模块
import string  # 导入字符串模块# 连接数据库
conn = sqlite3.connect('keys.db')
# 获取游标
c = conn.cursor()def creat_table():# 调用execute方法创建表c.execute('CREATE TABLE IF NOT EXISTS keys (id INTEGER PRIMARY KEY AUTOINCREMENT, key TEXT NOT NULL)')# 提交事务conn.commit()def GenKey(length):  # 定义生成激活码函数chars = string.ascii_letters + string.digits  # 生成所有字母和数字return ''.join(random.choice(chars) for i in range(length))def SaveKey(content):  # 定义保存激活码函数# 使用占位符?来插入内容,这是防止SQL注入的推荐做法c.execute("INSERT INTO keys (key) VALUES (?)", (content,))# 提交事务conn.commit()if __name__ == '__main__':  # 判断是否是主程序creat_table()  # 创建表for i in range(200):  # 循环200次value = GenKey(20)  # 生成20位的激活码print(value)  # 输出激活码SaveKey(value)  # 保存激活码conn.close()  # 关闭数据库连接
# **************************************************************************

3,生成激活码并保存到sqlite3数据库并生成一个激活码的二维码,生成的二维码保存到keys文件夹下

# 3 生成激活码并保存到sqlite3数据库,并生成一个激活码的二维码,生成的二维码保存到keys文件夹下
import random
import sqlite3
import string
import qrcode
from qrcode.image.pil import PilImage# 连接数据库
conn = sqlite3.connect('keys.db')
# 获取游标
c = conn.cursor()def creat_table():c.execute('CREATE TABLE IF NOT EXISTS keys (id INTEGER PRIMARY KEY AUTOINCREMENT, key TEXT NOT NULL)')conn.commit()def GenKey(length):chars = string.ascii_letters + string.digitsreturn ''.join(random.choice(chars) for i in range(length))def SaveKey(content, index):c.execute("INSERT INTO keys (key) VALUES (?)", (content,))conn.commit()# 生成二维码qr = qrcode.QRCode(version=1,error_correction=qrcode.constants.ERROR_CORRECT_L,box_size=10,border=5,)qr.add_data(content)qr.make(fit=True)# 保存二维码为图片img = qr.make_image(fill_color="black", back_color="white")img.save("keys/QR-{}.png".format(index))  # 保存到keys文件夹下,文件名包含激活码if __name__ == '__main__':creat_table()# 确保keys文件夹存在import osif not os.path.exists('keys'):os.makedirs('keys')for i in range(1, 201):value = GenKey(20)print(value)SaveKey(value, i)conn.close()
# **************************************************************************************

4,生成激活码并保存到mysql数据库

# 4 生成激活码并保存到mysql数据库
import random  # 导入随机数模块
import string  # 导入字符串模块
import mysql.connector  # 导入MySQL连接模块# 定义生成激活码函数
def GenKey(length):chars = string.ascii_letters + string.digitsreturn ''.join(random.choice(chars) for _ in range(length))# 定义保存激活码函数
def SaveKey(content):# 创建数据库连接(可以考虑使用连接池)cnx = mysql.connector.connect(user='root', password='******',host='localhost',database='mysql')cursor = cnx.cursor()# 执行SQL语句,插入激活码add_key = ("INSERT INTO `keys` (`key_value`) ""VALUES (%s)")data = (content,)cursor.execute(add_key, data)cnx.commit()# 关闭数据库连接cursor.close()cnx.close()if __name__ == '__main__':  # 判断是否是主程序# 考虑使用数据库连接池,或者在循环外部创建连接cnx = mysql.connector.connect(user='root', password='******',host='localhost',database='mysql')cursor = cnx.cursor()for i in range(200):  # 循环200次value = GenKey(20)  # 生成20位的激活码print(value)  # 输出激活码SaveKey(value)  # 保存激活码# 循环结束后关闭数据库连接cursor.close()cnx.close()
# ****************************************************************************************

5,生成激活码并保存到redis数据库

# 5 生成激活码并保存到redis数据库
import redis
import random
import string# 生成随机键的函数
def GenKey(length):letters = string.ascii_letters + string.digitsreturn ''.join(random.choice(letters) for i in range(length))# Redis管理类
class RedisManager:def __init__(self, host='localhost', port=6379, db=0, password=None):self.r = redis.Redis(host=host, port=port, db=db, password=password)def save_key(self, key, value):# 将布尔值转换为字符串if isinstance(value, bool):value = str(value).lower()try:self.r.set(key, value)print(f"Key {key} with value {value} saved to Redis successfully.")except redis.exceptions.RedisError as e:print(f"Error saving key to Redis: {e}")def close(self):self.r.close()# 主程序if __name__ == '__main__':redis_manager = RedisManager(password='******')  # 创建RedisManager实例# 尝试保存一些键值对到Redis中for _ in range(200):  # 例如,保存10个键值对key = GenKey(20)  # 生成一个随机键value = bool(random.randint(0, 1))  # 生成一个随机布尔值作为值redis_manager.save_key(key, value)  # 调用save_key方法保存键值对redis_manager.close()  # 关闭Redis连接
#****************************************************************************************

 

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/3589.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux搭建NFS服务器

什么是NFS NFS是网络文件系统(Network File System)的缩写,是一种分布式文件系统协议,用于在网络上共享文件和目录。NFS允许用户从一个计算机上访问另一个计算机上的文件,就像它们本地存在一样。这意味着,…

C语言学习/复习34--内存相关笔试题/C与C++的内存/柔性数组

一、动态内存管理笔试题 1.值传递 注意事项1:指针的地址传递需要将指针的地址用二级指针接收,本题属于值传递不属于地址传递 修改:1改为地址传递,2释放malloc()函数申请的空间 注意事项2:printf()字符串时,…

力扣HOT100 - 200. 岛屿数量

解题思路: 岛屿题目一般使用dfs。 1.判断是否越界 2.用0,1,2三个状态标识当前格子的状态(三个状态比两个状态更清晰) 3.向周围四个方向遍历 class Solution {public int numIslands(char[][] grid) {int cnt 0;fo…

超实用的电脑桌面便签+待办清单app

对于上班族来说,桌面便签加待办清单软件是提升工作效率的得力助手。想象一下,在繁忙的工作中,你能够快速记录重要事项,设置待办任务提醒,一切都能有条不紊地进行。这种便捷性,尤其在处理多项任务和紧急事务…

算法----BF算法KMP算法

请想象一个情景: 当你脑海中突然浮现出一个词,你该怎么去找到这个词的有关内容? 打开我们浏览器的搜索框,输入你想的这个词,然后点击Enter。浏览器就会自动搜索与该词匹配的内容。 这个过程实际上可以简化成以下形式…

配置有效的防爬虫技术保护网站

本文主要介绍了防爬虫的概念、目的以及一些有效的防爬虫手段。防爬虫是指网站采取各种技术手段阻止爬虫程序对其数据进行抓取的过程。为了保护网站的数据和内容的安全性,防止经济损失和恶意竞争,以及减轻服务器负载,网站需要采取防爬虫机制。…

人工智能_大模型042_模型微调002_模型微调代码开发_模型评估_模型checkpoint_超参数构建_训练器构建_数据规整器构建---人工智能工作笔记0177

然后我们需要使用具有GPU的服务器,来运行下面的代码: <b>注意:</b> <ul> <li>以下的代码,都不要在Jupyter笔记上直接运行,会死机!!</li> <li>请下载左边的脚本`experiments/tiny/train.py`,在实验服务器上运行。</li> 1. 导…

c++中的指针

一、指针的基本概念 指针的作用&#xff1a;可以通过指针间接访问内存 内存编号是从0开始记录的&#xff0c;一般采用16进制数字表示。可以利用指针变量保存地址。 二、指针变量的定义和使用 指针变量定义语法&#xff1a; 数据类型 * 变量名 #include<iostream> u…

g 对象:Flask 应用中的“临时口袋”

文章目录 g对象的理解Flask 中的 g 对象g 对象的特点:使用 g 对象: 示例 g对象的理解 想象一下&#xff0c;你在逛超市。你需要一个购物篮来装你挑选的商品。这个购物篮就像 Flask 应用中的 g 对象&#xff0c;它是一个临时存放东西的地方&#xff0c;方便你在购物过程中随时取…

Mybatis之if标签判断boolean值

文章目录 一、普通的字符串类型判断空逻辑二、Boolean类型判断 一、普通的字符串类型判断空逻辑 <if test"query.activity ! null and query.activity ! ">AND extra.activity #{query.activity}</if>二、Boolean类型判断 <if test"!query.ori…

多组学+机器学习+膀胱癌+分型+建模

这是一个基于多组学机器学习的分型建模文章&#xff0c;这里我们大概介绍一下&#xff0c;这篇文章做了啥 一、研究背景 1、尿路上皮癌是高度恶性的肿瘤&#xff0c;预后差&#xff0c;死亡率高 2、没有明显有效的治疗方法&#xff0c;多数患者在免疫治疗中无法受益&#xf…

selenium显式等待

selenium显示等待 确保页面元素在特定条件下加载完毕后再执行后续操作。显示等待可以通过WebDriverWait类和ExpectedConditions类来实现。通过使用显示等待&#xff0c;可以避免在页面元素还未加载完毕时就进行操作&#xff0c;从而提高测试的稳定性和可靠性。 # 导包 from s…

SpringBoot Filter过滤器的使用篇

Filter生命周期 程序启动调用Filter的init()方法(永远只调用一次)&#xff1b;程序停止调用Filter的destroy()方法(永远只调用一次)&#xff1b;doFilter()方法每次的访问请求如果符合拦截条件都会调用(程序第一次运行&#xff0c;会在servlet调用init()方法以后调用&#xff…

【基于YOLOv8的教室人脸识别 附源码 数据集】

基于YOLOv8的教室人脸识别 附源码 数据集 在当今数字化迅速发展的教育领域中&#xff0c;人脸识别技术已成为提高校园安全和教学效率的关键工具。本文将详细介绍基于最新YOLOv8算法的教室人脸识别系统&#xff0c;这一系统不仅能够实时准确地识别学生和教职工的面部特征&#…

1小时学会SpringBoot3+Vue3前后端分离开发

首发于Enaium的个人博客 引言 大家可能刚学会Java和Vue之后都会想下一步是什么&#xff1f;那么就先把SpringBoot和Vue结合起来&#xff0c;做一个前后端分离的项目吧。 准备工作 首先你需要懂得Java和Vue的基础知识&#xff0c;环境这里就不多说了&#xff0c;直接开始。 …

switch语句深讲

一。功能 1.选择&#xff0c;由case N:完成 2.switch语句本身没有分支功能&#xff0c;分支功能由break完成 二。注意 1.switch语句如果不加break&#xff0c;在一次判断成功后会执行下面全部语句并跳过判断 2.switch的参数必须是整形或者是计算结果为整形的表达式,浮点数会…

JSON Web Tokens攻击漏洞手法

身份验证和授权是任何应用程序的关键组件。人们已经开发了各种标准和框架来促进此类组件的开发并使应用程序更加安全。其中&#xff0c;JSON Web Tokens (JWT) 多年来已成为流行的选择。 JSON Web 令牌是一种开放的行业标准 RFC 7519 方法&#xff0c;用于在两方之间安全地发送…

手机拍照打印出的黑乎乎

1&#xff09;新建word——插入图片——双击图片&#xff0c;在顶部菜单栏中找到校正&#xff0c;选择其中最清晰的图片。 2&#xff09;选中图片——图片另存为。 3&#xff09;自带画图工具打开&#xff0c;ctrla全选——鼠标移动图片&#xff0c;将不需要的边边角角剪切掉。…

科普童话新课堂杂志社科普童话新课堂编辑部2024年第16期目录

作品选 封2,封3-封4 探索新知《科普童话》投稿&#xff1a;cn7kantougao163.com 泱泱国之风 悠悠诗之情 沈灿宇1-3 试论"文化意识"视角下的高中英语阅读教学 董娜4-6 立足小组合作探究优化写作能力培养 时同祥7-9 以"导"促学:全面提升学生的文学核心素养 吴…

平抑风电波动的电-氢混合储能容量优化配置

这篇论文中的EMD分解法在非线性扰动信号分解上优于小波分解法,EMD分解出来的imf各频次信号,继而利用C2F实现信号重构,根据最大波动量限值剔除出需要储能平抑的波动量,继而用超级电容实现平抑(论文中用的碱水电解槽+燃料电池我认为有很多个点可以佐证不合适,但是电制氢是热…