说明
公司的常用数据库,为了避免避免重复书写跳板机连入方式,以及开启关闭等脚本,编写成快捷的连接类。
脚本
# 常用数据库连接类
class xxxxDatabaseConn:
# 初始化并开启数据库连接
def __init__(self, choice_host:str, database='undefined'):
print("初始化:xxxxDatabaseConn:对象 '{host}.{databasename}'".format(host = choice_host, databasename = database))
self.host = choice_host
self.databasename = database
self.open(choice_host,database)
def open(self, choice_host:str, database='undefined'):
self.choice_host = choice_host
# xx公司bass数据库
if choice_host == "xx公司bass数据库":
# 启动服务
self.server = SSHTunnelForwarder(
ssh_address_or_host=('{填入跳板机地址}', 9888), # ssh 目标服务器 ip 和 port
ssh_username="{填入跳板机用户名}", # ssh 目标服务器用户名
# ssh_password= "", # ssh 目标服务器用户密码
ssh_pkey="{填入私钥存放地址}", # ssh 目标服务器证书
# ssh_private_key_password="", # ssh 目标服务器证书密码
remote_bind_address=('127.0.0.1', 3306), # mysql 服务ip 和 part
local_bind_address=('127.0.0.1', 5101), # ssh 目标服务器的用于连接 mysql 或 redis 的端口,该 ip 必须为 127.0.0.1
set_keepalive=5
)
self.server.start()
print("跳板机开启")
# 在server环境下连接数据库
self.conn = pymysql.connect(
host=self.server.local_bind_host, # server.local_bind_host 是 参数 local_bind_address 的 ip
port=self.server.local_bind_port, # server.local_bind_host 是 参数 local_bind_address 的 port
user="{填入数据库用户名}",
password="{填入数据库登录密码}",
db=database, # database为服务器下选定的数据库名称
charset="utf8"
)
print("数据库连接")
# xx公司测试库
if choice_host == "xx公司链测试库":
# 在server环境下连接数据库
self.conn = pymysql.connect(
host="{填入服务器地址}", # server.local_bind_host 是 参数 local_bind_address 的 ip
port=3306, # server.local_bind_host 是 参数 local_bind_address 的 port
user="{填入数据库用户名}",
password="{填入数据库登录密码}",
db=database, # database为服务器下选定的数据库名称
charset="utf8"
)
self.cursor = self.conn.cursor()
print(choice_host + " 连接已开启...")
# 关闭数据库连接
def close(self):
try:
self.conn.close()
print(self.choice_host + " 连接已关闭...")
except Exception as e:
print('出现异常:', e)
self.conn.rollback()
return False
if __name__ == "__main__":
WaykichainDatabaseConn("本地数据库","test_db")
本文档介绍了一个Python脚本,定义了一个名为xxxxDatabaseConn的类,用于简化数据库的连接操作。类中包含了初始化方法,根据传入的主机名选择不同的数据库连接方式,如通过SSH隧道连接或直接连接。此外,还提供了开启和关闭数据库连接的方法,以及针对不同数据库(如xx公司bass数据库和xx公司测试库)的连接示例。通过此类,可以避免重复书写数据库连接和管理的代码。
&spm=1001.2101.3001.5002&articleId=111959432&d=1&t=3&u=4381623a562e4c2b93b435453a444f8d)
2186

被折叠的 条评论
为什么被折叠?



