You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
101 lines
3.0 KiB
101 lines
3.0 KiB
# 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)
|