python使⽤单例模式创建MySQL链接
在实际项⽬中,可能会在多个不同的⽅法中使⽤MySQL链接,如果每次都新建、关闭连接,当访问量⾼时可能会造服务器崩溃⽆法访问等问题,⽽单例模式可以很好的解决这个问题。
关于python的单例模式有详细的例⼦,这⾥我们使⽤⽅法4,因为这种⽅法更加pythonic。
代码如下:
from functools import wraps
tor
from sshtunnel import SSHTunnelForwarder
def singleton(cls):
instances = {}
@wraps(cls)
def get_instance(*args, **kw):
if cls not in instances:
instances[cls] = cls(*args, **kw)
return instances[cls]
return get_instance
# 数据库连接实例
@singleton
class MySQLSingle(object):
def __init__(self, conn='', server=''):
< = conn
self.server = server
def get_conn(self, host_jump, port_jump, ssh_pk_jump, user_name_jump, host_mysql, port_mysql, user_name_mysql, password_mysql, database): try:
self.server = SSHTunnelForwarder(
(host_jump, int(port_jump)), # 跳板机的配置
mysql下载链接ssh_pkey=ssh_pk_jump,
ssh_username=user_name_jump,
remote_bind_address=(host_mysql, int(port_mysql))) # 数据库服务器的配置
self.server.start()
< = t(host='127.0.0.1', port=self.server.local_bind_port, user=user_name_mysql,
password=password_mysql, database=database)
except Exception as e:
print('File to connect database: %s' % e)
, self.server
使⽤⽅法如下:
mysql_single = MySQLSingle()
conn, server = _conn(host_jump, port_jump, ssh_pk_jump, user_name_jump, host_mysql, port_mysql,
user_name_mysql, password_mysql, database)
#
conn.close()
server.close()
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论