import pymysql
import redis
import requests
import hashlib
import os
from lib.core.path import REPORT_PATH
class MyMysql(object):
def __init__(self, host, port, user, password, db, charset='utf8'):
self.__host = host
self.port = port
self.user = user
self.password = password
self.db = db
self.charset = charset
self.__get_cur() # 在类初始化的时候就去调用创建游标的函数
def __get_cur(self):
try:
self.con = pymysql.connect(host=self.__host, port=self.port, user=self.user,
password=self.password, db=self.db, charset=self.charset)
except Exception as e:
print('这里出错了,错误信息是:%s' % e)
else:
self.cur = self.con.cursor() # 建立游标
def select_sql(self, sql):
try:
self.cur.execute(sql)
except Exception as e:
print('sql执行失败:%s' % e)
else:
return self.cur.fetchall()
def other_sql(self, sql):
try:
self.cur.execute(sql)
except Exception as e:
print('sql执行失败:%s' % e)
else:
self.con.commit()
def close(self):
self.cur.close()
self.con.close()
class MyRedis(object):
def __init__(self, host, port, password):
self.pool = redis.ConnectionPool(host=host, port=port, password=password)
self.r = redis.Redis(connection_pool=self.pool)
def get(self, k):
return self.r.get(k)
def set(self, k, v):
self.r.set(k, v)
def my_request(method, url, data=None, headers=None, files=None): # 返回结果函数
try:
if method.upper() == 'GET':
r = requests.get(url, data, headers=headers, files=files).json() # 不返回json串也会报错
else:
r = requests.post(url, data, headers=headers, files=files).json()
except Exception as e:
return '出错了,错误是:%s' % e
return r
def my_md5(st): # 加密函数
secret_key = 'st90dsf43ert'
st = str(st) + secret_key
md = hashlib.md5()
md.update(st.encode())
return md.hexdigest()
def get_new_report():
all_report = os.listdir(REPORT_PATH)
file_name = all_report[-2]
abs_path = os.path.join(REPORT_PATH, file_name)
return abs_path
def remove_report():
all_report = os.listdir(REPORT_PATH)
for report in all_report:
if report.endswith('.html'):
abs_path = os.path.join(REPORT_PATH, report)
os.remove(abs_path)
# my_mysql = MyMysql(**MYSQL_INFO) # **会自动把字典里的值传给MyConnect类里对应的参数
# my_redis = MyRedis(**REDIS_INFO) # **会自动把字典里的值传给MyRedis类里对应的参数