# python -m pip install --upgrade pip -i http://pypi.douban.com/simple/ # pip install pymysql -i http://pypi.douban.com/simple/ import datetime import json import pymysql.cursors class MySQLHelper: # 配置 user = 'root' password = 'DsideaL147258369' host = '10.10.14.230' port = 22066 db = 'huanghai' def __init__(self, host=host, port=port, db=db, user=user, password=password, charset="utf8"): self.host = host self.user = user self.port = port self.password = password self.charset = charset self.db = db try: self.conn = pymysql.connect(host=self.host, port=self.port, user=self.user, passwd=self.password, db=self.db, charset=self.charset, cursorclass=pymysql.cursors.DictCursor) self.cursor = self.conn.cursor() # 设置执行时间为8小时 sql = "set session wait_timeout=288000" self.cursor.execute(sql) sql = "set session interactive_timeout=288000" self.cursor.execute(sql) except Exception as e: print('MySql Error : %d %s' % (e.args[0], e.args[1])) def query(self, sql: object) -> object: try: self.cursor.execute(sql) result = self.cursor.fetchall() return result except Exception as e: print('MySql Error: %s SQL: %s' % (e, sql)) def execute(self, sql): try: self.cursor.execute(sql) self.conn.commit() # 获取更新了多少条数据 return self.cursor.rowcount except Exception as e: print('MySql Error: %s SQL: %s' % (e, sql)) def executeWithPara(self, sql, params): try: self.cursor.execute(sql, params) self.conn.commit() except Exception as e: print('MySql Error: %s SQL: %s' % (e, sql)) def executemany(self, sql, data): try: self.cursor.executemany(sql, data) self.conn.commit() except Exception as e: print('MySql Error: %s SQL: %s' % (e, sql)) def close(self): self.cursor.close() self.conn.close() # 黄海定义的输出信息的办法,带当前时间 def logInfo(msg): i = datetime.datetime.now() print(" %s %s" % (i, msg)) if __name__ == '__main__': with open("./pack.json", "r", encoding="utf-8") as f: _dict = json.load(f) # allcnt = 0 db = MySQLHelper() for _bean in _dict: actions = _dict[_bean] for action in actions: memo = action["memo"] sql = action["sql"] while True: cnt = db.execute(sql) allcnt = allcnt + cnt if cnt == 0: break logInfo(memo + ",更新%s条" % cnt) db.close() logInfo("恭喜,所有清洗工作成功完成,共清洗%s条" % allcnt)