127 lines
4.3 KiB
Python
127 lines
4.3 KiB
Python
from sshtunnel import SSHTunnelForwarder
|
|
import pymysql
|
|
|
|
|
|
class JumpHostDatabaseConnector:
|
|
def __init__(self, config):
|
|
self.config = config
|
|
|
|
def connect_to_jump_host(self):
|
|
server = SSHTunnelForwarder(
|
|
(self.config['jump_host_ip'], self.config['jump_host_port']),
|
|
ssh_username=self.config['jump_host_user'],
|
|
ssh_password=self.config['jump_host_password'],
|
|
remote_bind_address=(self.config['database_ip'], self.config['database_port'])
|
|
)
|
|
server.start()
|
|
return server
|
|
|
|
def connect_to_database(self, server):
|
|
conn = pymysql.connect(
|
|
host='127.0.0.1', # 这里必须填127.0.0.1
|
|
port=server.local_bind_port,
|
|
user=self.config['database_user'],
|
|
password=self.config['database_password'],
|
|
db=self.config['database_name']
|
|
)
|
|
return conn
|
|
|
|
def query_database(self, query):
|
|
with self.connect_to_jump_host() as server:
|
|
with self.connect_to_database(server) as conn:
|
|
with conn.cursor() as cursor:
|
|
cursor.execute(query)
|
|
results = cursor.fetchall()
|
|
return results
|
|
|
|
|
|
# 配置字典
|
|
config_common = {
|
|
'jump_host_ip': "180.184.103.38",
|
|
'jump_host_port': 2222,
|
|
'jump_host_user': "cl_ad",
|
|
'jump_host_password': "4CGbdPW2zkbewcp^",
|
|
'database_ip': "mysqlc684e4271035.rds.ivolces.com",
|
|
'database_port': 3306,
|
|
'database_user': "cl_readOnly",
|
|
'database_password': "Chuangliang@2023",
|
|
'database_name': "chuangliang_ad_ucx_common"
|
|
}
|
|
|
|
config_task = {
|
|
'jump_host_ip': "180.184.103.38",
|
|
'jump_host_port': 2222,
|
|
'jump_host_user': "cl_ad",
|
|
'jump_host_password': "4CGbdPW2zkbewcp^",
|
|
'database_ip': "mysql94eab4cb64ee.rds.ivolces.com",
|
|
'database_port': 3306,
|
|
'database_user': "cl_readOnly",
|
|
'database_password': "Chuangliang@2023",
|
|
'database_name': "chuangliang_ad_task_ucx"
|
|
}
|
|
|
|
config_baidu_task = {
|
|
'jump_host_ip': "180.184.103.38",
|
|
'jump_host_port': 2222,
|
|
'jump_host_user': "cl_ad",
|
|
'jump_host_password': "4CGbdPW2zkbewcp^",
|
|
'database_ip': "mysqlf546d0debe54.rds.ivolces.com",
|
|
'database_port': 3306,
|
|
'database_user': "cl_readOnly",
|
|
'database_password': "Chuangliang@2023",
|
|
'database_name': "chuangliang_ad_task_baidu"
|
|
}
|
|
|
|
config_material1 = {
|
|
'jump_host_ip': "180.184.103.38",
|
|
'jump_host_port': 2222,
|
|
'jump_host_user': "cl_ad",
|
|
'jump_host_password': "4CGbdPW2zkbewcp^",
|
|
'database_ip': "mysql7f735bf46c55.rds.ivolces.com",
|
|
'database_port': 3306,
|
|
'database_user': "cl_readOnly",
|
|
'database_password': "Chuangliang@2023",
|
|
'database_name': "chuangliang_ad_material"
|
|
}
|
|
|
|
config_material2 = {
|
|
'jump_host_ip': "180.184.103.38",
|
|
'jump_host_port': 2222,
|
|
'jump_host_user': "cl_ad",
|
|
'jump_host_password': "4CGbdPW2zkbewcp^",
|
|
'database_ip': "mysql58c5730efa71.rds.ivolces.com",
|
|
'database_port': 3306,
|
|
'database_user': "cl_readOnly",
|
|
'database_password': "Chuangliang@2023",
|
|
'database_name': "chuangliang_ad_material"
|
|
}
|
|
|
|
config_async_create_ad_batch = {
|
|
'jump_host_ip': "180.184.103.38",
|
|
'jump_host_port': 2222,
|
|
'jump_host_user': "cl_ad",
|
|
'jump_host_password': "4CGbdPW2zkbewcp^",
|
|
'database_ip': "mysqlf43ac72e50a0.rds.ivolces.com",
|
|
'database_port': 3306,
|
|
'database_user': "cl_readOnly",
|
|
'database_password': "Chuangliang@2023",
|
|
'database_name': "chuangliang_ad_task"
|
|
}
|
|
|
|
# 实例化数据库连接器
|
|
UC_common_db = JumpHostDatabaseConnector(config_common)
|
|
UC_task_db = JumpHostDatabaseConnector(config_task)
|
|
Bd_task_db = JumpHostDatabaseConnector(config_baidu_task)
|
|
Material1_db = JumpHostDatabaseConnector(config_material1)
|
|
Material2_db = JumpHostDatabaseConnector(config_material2)
|
|
Async_create_ad_batch_db = JumpHostDatabaseConnector(config_async_create_ad_batch)
|
|
|
|
if __name__ == '__main__':
|
|
sql = "SELECT * FROM `task_log_ucx_batch_add_ad` where batch_id = '20241110104432b71b64129f0d11efb0d200163e0d187b'"
|
|
baidu_task_batchid_sql = "SELECT batch_id, async_task_id,create_status FROM `async_create_ad_batch` where " \
|
|
"async_task_id = 14027844245 "
|
|
|
|
# 执行查询
|
|
results = Async_create_ad_batch_db.query_database(baidu_task_batchid_sql)
|
|
print(results)
|