学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.digits
    return ''.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 os

    if 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.digits
    return ''.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.digits
    return ''.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.mfbz.cn/a/575748.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

如何在PostgreSQL中创建并使用窗口函数来进行复杂的分析查询?

文章目录 解决方案1. 了解窗口函数的基本概念2. 常用的窗口函数3. 使用示例示例 1:计算每行销售数据的累计销售额示例 2:计算每行销售数据相对于前一行销售额的增长率 结论 PostgreSQL 提供了一套强大的窗口函数(Window Functions&#xff09…

NumPy简单学习(需要结合书本)

NumPy简单学习(需要结合书本:Python数据分析与应用) 文章目录 NumPy简单学习(需要结合书本:Python数据分析与应用)前言导库: 一、大概内容1.掌握NumPy数组对象ndarray(1)…

水电气能耗管理云平台

安科瑞薛瑶瑶18701709087/17343930412 能耗管理云平台采用泛在物联、云计算、大数据、移动通讯、智能传感器等技术手段可为用户提供能源数据采集、统计分析、能效分析、用能预警、设备管理等服务,平台可以广泛应用于多种领域。

武汉星起航:践行“走出去”,一站式孵化助推跨境电商飞跃发展

在全球经济一体化和互联网技术飞速发展的背景下,跨境电商行业已成为连接国内外市场的重要桥梁。作为行业内的佼佼者,武汉星起航凭借多年自营店铺运营经验的积淀和跨境电商资源的深度整合,公司成功打造出一站式卖家孵化模式,为众多…

DC-DC电源芯片规格书上的各种参数详解

1.输出电压精确度 输出电压的精确度,也被称为设定点精度,它描述了输出电压的允许误差。该参数通常是在常温,满载和额定输入电压的条件下测得的,它是这样定义的: 输出电压之所以产生误差,是因为元器件本身存在误差,特别是输出端的分压电阻,它将输出电压降低后比PWM比较…

Windows 10 使用 Vagrant 快速创建虚拟机

一、下载 Vagrant 官网地址:Oracle VM VirtualBox 阿里云盘:阿里云盘分享 二、安装 Vagrant 安装软件前请先确认 CPU 是否开启了虚拟化,要求开启 2.1、双击运行可执行文件后点击下一步 2.2、选择安装路径,为了避免中文乱码产生的…

【CSS】grid 布局一行自动填充,每行最大限定px

<div class"model-plat-content"><div class"mode-card" v-for"i in 30"></div></div>.model-plat-content {display: grid;// 解释&#xff1a; repeat(auto-fit, minmax(250px, 1fr)) 自动填充&#xff0c;每行最大25…

Python:解析pyserial串口通讯

简介&#xff1a;串行接口简称串口&#xff0c;也称串行通信接口或串行通讯接口&#xff08;通常指COM接口&#xff09;&#xff0c;是采用串行通信方式的扩展接口。串行接口 &#xff08;Serial Interface&#xff09;是指数据一位一位地顺序传送。其特点是通信线路简单&#…

【插件】IDEA 热部署插件 JRebel

1 搜索安装插件 JRebel 2 选中Team URL 1、在上面的框中输入激活的url地址 https://jrebel.qekang.com/{GUID} http://jrebel-license.jiweichengzhu.com/{GUID} GUID生成工具 Create GUID online (guidgen.com) 备用 404 Not Found (ofmonkey.com) 如果上述激活地址不能…

Python请求示例电商商品详情数据(API接口开发系列),从入门到实战

在电商系统中&#xff0c;商品详情数据通常通过API接口提供。以下是一个从入门到实战的Python请求示例&#xff0c;展示如何获取电商商品详情数据。 入门篇&#xff1a;理解API接口 首先&#xff0c;你需要了解API&#xff08;应用程序接口&#xff09;的基本概念。API允许不…

Flutter应用下拉菜单设计DropdownButtonFormField控件介绍

文章目录 DropdownButtonFormField介绍使用方法重点代码说明属性解释 注意事项 DropdownButtonFormField介绍 Flutter 中的 DropdownButtonFormField 是一个用于在表单中选择下拉菜单的控件。它是 DropdownButton 和 TextFormField 的组合&#xff0c;允许用户从一组选项中选择…

全域外卖城市合伙人怎么样啊?一文解答

全域外卖城市合伙人&#xff0c;也叫做全域外卖服务商&#xff0c;这一职业在当今数字化时代愈发显得重要。它与传统团购外卖服务商的区别&#xff0c;就如同广袤的星空与单一的星星。全域外卖服务商&#xff0c;顾名思义&#xff0c;就是能够涉足所有外卖领域的服务商。这些领…

Python数据爬取超简单入门

## 什么是网络爬虫&#xff1f; 网络爬虫是一种自动浏览器程序&#xff0c;能够自动地从互联网获取数据。爬虫的主要任务是访问网页&#xff0c;分析网页内容&#xff0c;然后提取所需的信息。爬虫广泛应用于数据收集、数据分析、网页内容监控等领域。 ## 爬虫的基本步骤 1.…

前端开发攻略---用原生JS在网页中也能实现文本转语音

1、原理 语音合成 (也被称作是文本转为语音&#xff0c;英语简写是 tts) 包括接收 app 中需要语音合成的文本&#xff0c;再在设备麦克风播放出来这两个过程。 Web API中对此有一个主要控制接口 SpeechSynthesis&#xff0c;外加一些处理如何表示要被合成的文本 (也被称为 utte…

学习随手记ComboBoxEx选定项的值value和text值获取方法

代码&#xff1a;dotNetBar2中的ComboxBoxEx的使用方法 //获取选定项的value值 string _v ((DevComponents.Editors.ComboItem)cbo_cmdType.SelectedItem).Value.ToString(); //获取选定项的text值 string _t ((DevComponents.Editors.ComboItem)cbo_cmdType.SelectedItem)…

Hive函数详解

Hive 是一个建立在 Hadoop 上的数据仓库基础架构&#xff0c;它提供了类似于 SQL 的查询语言&#xff0c;称为 HiveQL&#xff0c;用于对存储在 Hadoop 分布式文件系统中的数据进行查询和分析。 1.函数简介 Hive会将常用的逻辑封装成函数给用户进行使用&#xff0c;类似于Jav…

Java关键字super解释

hi&#xff0c;我是程序员王也&#xff0c;一个资深Java开发工程师&#xff0c;平时十分热衷于技术副业变现和各种搞钱项目的程序员~&#xff0c;如果你也是&#xff0c;可以一起交流交流。 今天我们来聊聊Java中super关键字~ 1. 引言 1.1 介绍Java中的关键字 Java是一种强…

SpringCloud 之 服务提供者

前提 便于理解,我修改了本地域名》这里!!! 127.0.0.1 eureka7001.com 127.0.0.1 eureka7002.com 127.0.0.1 eureka7003.com学习Rest实例之提供者 提供者模块展示 1、导入依赖 <!-- 实体类 Web--><dependency><groupId>com.jyl</groupId><…

HarmonyOS实战开发-如何在鸿蒙开发中使用数据库

鸿蒙中的数据库基于SQLite组件&#xff0c;用来处理关系比较复杂的数据&#xff0c;本文将以WORKER表为例&#xff0c;为大家演示在鸿蒙开发中对数据库的增删改查操作。 1、首先导入数据库模块&#xff1a; import relationalStore from ohos.data.relationalStore;2、配置数…

独家定制,个性至上——可道云TeamOS企业网盘,为您的企业量身定制

烦恼买了企业网盘&#xff0c;却不能修改网盘名称&#xff1f;想要将网盘的logo换成公司的logo&#xff1f; 市面上的大多数公有云盘就是标准化产品&#xff0c;无法改变企业网盘的既定样式、增删功能、也难以根据企业的实际需求灵活变通。 特别是当今企业应用的办公软件比较…