1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
import time
import traceback
from sqlalchemy import create_engine
class TemplatesMysql(object):
def __init__(self, site_name='us'):
self.DB_CONN_DICT = {
"mysql_port": "3306",
"mysql_db": "selection",
"mysql_user": "adv_yswg",
# "mysql_pwd": "S4FeR09bFF441lTz",
"mysql_pwd": "Ty11ky169s120wxO15qz",
"mysql_host": "rm-wz9yg9bsb2zf01ea4yo.mysql.rds.aliyuncs.com",
}
self.site_name = site_name
self.engine = self.mysql_connect()
def mysql_connect(self):
"""
Connection of mysql.
"""
nums = 0
while True:
nums += 1
try:
if self.site_name == 'us':
db = 'selection'
else:
db = f'selection_{self.site_name}'
return create_engine(
f'mysql+pymysql://{self.DB_CONN_DICT["mysql_user"]}:' + f'{self.DB_CONN_DICT["mysql_pwd"]}@{self.DB_CONN_DICT["mysql_host"]}:{self.DB_CONN_DICT["mysql_port"]}/{db}?charset=utf8mb4') # , pool_recycle=3600
except Exception as e:
print("error_mysql_connect:", e, f"\n{traceback.format_exc()}")
time.sleep(nums * 20)
continue
def mysql_reconnect(self, table_name=None, e=None):
"""
Repeated connection of mysql.
"""
print(f"{table_name}表报错,等待5s继续:", e, f"\n{traceback.format_exc()}")
self.engine = self.mysql_connect()
time.sleep(5)