本文主要是介绍学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连接
#****************************************************************************************
这篇关于学python的第二十一天的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!