day12_框架二tools.py代码

import pymysql
import redis
import requests
import hashlib
import os
from conf.settings 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():
html_path = os.path.join(REPORT_PATH, 'html')
all_report = os.listdir(html_path)
file_name = all_report[-1]
abs_path = os.path.join(html_path, file_name)
return abs_path


def remove_report():
html_path = os.path.join(REPORT_PATH, 'html')
all_report = os.listdir(html_path)
for report in all_report:
abs_path = os.path.join(html_path, report)
os.remove(abs_path)

# my_mysql = MyMysql(**MYSQL_INFO) # **会自动把字典里的值传给MyConnect类里对应的参数
# my_redis = MyRedis(**REDIS_INFO) # **会自动把字典里的值传给MyRedis类里对应的参数

转载于:https://www.cnblogs.com/laosun0204/p/8640646.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
优化以上代码可以考虑以下几点: 1. 子查询替换为临时表:将子查询部分的代码提取出来,创建一个临时表,然后在主查询中引用该临时表,这样可以提高查询效率。 ```sql CREATE TEMPORARY TABLE temp_table AS SELECT a.biz_date, a.county_name, a.depart_name, a.person_uuid, a.cust_code, a.cust_name, a.terminal_level_name, a.data_gather_type_name, a.sc_type_name, a.sc_score, b.sc_type_name AS sc_type_name_old, b.sc_score AS sc_score_old, a.sc_score - b.sc_score AS up FROM ads_yh_yx_sctwo a LEFT JOIN ads_yh_yx_sctwo b ON a.cust_code = b.cust_code AND b.biz_date = DATE_FORMAT(DATE_SUB(NOW(), INTERVAL 2 DAY), '%Y%m%d') AND b.person_uuid = '00000000001389361632876_5304_371' WHERE a.biz_date = DATE_FORMAT(DATE_SUB(NOW(), INTERVAL 1 DAY), '%Y%m%d') AND a.person_uuid = '00000000001389361632876_5304_371' AND a.sc_type_name <> b.sc_type_name AND (a.sc_score - b.sc_score) <> 0; ``` 2. 使用索引:对于频繁使用的列,可以考虑创建索引以提高查询效率。根据实际情况,在 `ads_yh_yx_sctwo` 表的 `biz_date`、`person_uuid` 和 `cust_code` 列上创建索引。 ```sql CREATE INDEX idx_biz_date ON ads_yh_yx_sctwo (biz_date); CREATE INDEX idx_person_uuid ON ads_yh_yx_sctwo (person_uuid); CREATE INDEX idx_cust_code ON ads_yh_yx_sctwo (cust_code); ``` 3. 优化 JOIN 条件:根据实际情况,可以考虑调整 JOIN 的条件,使其更加精确,减少不必要的匹配。 4. 使用 EXPLAIN 分析查询计划:使用 `EXPLAIN` 命令可以帮助分析查询计划,找出潜在的性能问题,并进行相应优化。 以上是一些常见的优化方法,具体的优化策略需要根据实际情况和数据库结构进行调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值