from time import sleep
import pymysql
from rediscluster import StrictRedisCluster
class MysqldbHelper(object):
def __init__(self, host='数据库地址', username='登录名', password='密码', database='库名称', charset='utf8'):
self.host = host
self.username = username
self.password = password
self.database = database
self.con = None
self.cur = None
self.charset = charset
try:
self.con = pymysql.connect(host=self.host, user=self.username, passwd=self.password,
db=self.database)
# self.con = pymysql.connect(host=self.host, user=self.username, passwd=self.password, port=self.port,
# db=self.database)
# 所有的查询,都在连接 con 的一个模块 cursor 上面运行的
self.cur = self.con.cursor()
print('mysql :', self.database, '数据库成功连接')
except Exception as e:
print(e)
def execute(self, sql):
sql_ = sql
try:
self.cur.execute(sql_)
results = self.cur.fetchall()
# print(results)
return results
self.cur.close()
except pymysql.Error as e:
error = 'MySQL execute failed! ERROR (%s): %s' % (e.args[0], e.args[1])
print(error)
# redis集群中的所有主结点(所有master结点)
startup_nodes = [
{'host': '172.17.0.4', 'port': '6379'},
{'host': '172.17.0.5', 'port': '6380'},
{'host': '172.17.0.6', 'port': '6381'},
{'host': '172.17.0.7', 'port': '6382'},
{'host': '172.17.0.8', 'port': '6383'},
{'host': '172.17.0.9', 'port': '6384'},
]
if __name__ == '__main__':
try:
# 连接mysql
sql = MysqldbHelper(host='192.168.76.146',
username='root',
password='123456',
charset='utf-8',
database='test_data')
# 连接Redis集群
# 构建StrictRedisCluster对象
rClu = StrictRedisCluster(startup_nodes=startup_nodes, decode_responses=True, password="123456")
print('Redis 集群连接成功')
except Exception as e:
print(e)
command = ["select * from test_data", "desc test_data"]
desc = []
print('获取mysql信息到Redis')
result = sql.execute(command[1]) # 顺序获取字段名称
for name in range(len(result)):
desc.append(result[name][0])
pass
result = sql.execute(command[0]) # 将id添加到Redis set中
for i in range(len(result)):
for j in range(len(result[i])):
# rClu.sadd(desc[j], result[i][j])
rClu.set(name=result[i][j], value='登录', ex=5, nx=True) # 过期时间5s,存在不设置
# print(desc[j], ':', result[i][j])
pass
for i in range(len(result)): # 每个用户
print(result[i][0], ':', rClu.get(result[i][0]))
print('休息5秒')
sleep(5)
for i in range(len(result)): # 每个用户
print(result[i][0], ':', rClu.get(result[i][0]))
pass
运行结果:
mysql : test_data 数据库成功连接
Redis 集群连接成功
1 : 登录
2 : 登录
3 : 登录
休息5秒
1 : None
2 : None
3 : None
来源:CSDN
作者:qq_31808893
链接:https://blog.csdn.net/qq_31808893/article/details/104040333