python使用单例模式创建MySQL链接

代码:

from functools import wraps
import mysql.connector
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=‘‘):
        self.conn = 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)),  # 跳板机的配置
                ssh_pkey=ssh_pk_jump,
                ssh_username=user_name_jump,
                remote_bind_address=(host_mysql, int(port_mysql)))  # 数据库服务器的配置
            self.server.start()
            self.conn = mysql.connector.connect(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)
        return self.conn, self.server

使用方法如下:

mysql_single = MySQLSingle()
conn, server = mysql_single.get_conn(host_jump, port_jump, ssh_pk_jump, user_name_jump, host_mysql, port_mysql,
                                     user_name_mysql, password_mysql, database)
# do something...
conn.close()
server.close()

原文地址:https://www.cnblogs.com/gide/p/9654945.html

时间: 2024-11-13 05:39:52

python使用单例模式创建MySQL链接的相关文章

在MS sql server上如何创建mysql链接服务器

系统环境: Microsoft Windows Server 2003 Enterprise Edition Service Pack 2 [Microsoft Windows NT-5.2(3790)] SQL Server Enterprise Edition 8.00.2066(sp4) centOS mysql 部署步骤: linux环境 1.在mysql中创建账号及访问数据库权限(包括允许的访问IP) windows环境 1.在mssql中创建本地账号,最好和mysql中创建的账号一样

关于python使用django创建mysql表报错问题的解决

django 默认使用的数据库是sqlite 在项目中通常用mysql作为数据库,这就需要对mysql进行一些基本配置 1.在与项目名同名的文件夹下找到setting文件,找到 # DATABASES = {# 'default': {# 'ENGINE': 'django.db.backends.sqlite3',# 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),# }# }  并将其注释 2.在下面加上mysql的配置 DATABASES = {

使用Python创建MySQL数据库实现字段动态增加以及动态的插入数据

应用场景: 我们需要设计一个数据库来保存多个文档中每个文档的关键字.假如我们每个文档字符都超过了1000,取其中出现频率最大的为我们的关键字. 假设每个文档的关键字都超过了300,每一个文件的0-299号存储的是我们的关键字.那我们要建这样一个数据库,手动输入这样的一个表是不现实的,我们只有通过程序来帮我实现这个重复枯燥的操作. 具体的示意图如下所示: 首先图1是我们的原始表格: 图1 这个时候我们需要程序来帮我们完成自动字段的创建和数据的插入. 图2 上图是我们整个表的概况.下面我们就用程序来

beego 使用orm链接以及创建mysql数据库

1.0 这方面的资料在网站上确实很少 2.0 在用bee工具创建一个go项目后,接下来我们有2件事要做了,当然之前一只觉得GO的IDE实在不知道选着那个,因为在Mac电脑上开发,又不支持文件创建所以有点麻烦 最终还是确定用sublime来开发.sublime本身集合了命令行插件这样开发起来就不用在几个命令行窗口跳转 3.0 安装好sublime后用快捷键进入sublime pagecontrol  或按shift+command+p 打开 输入GOSUBLIME:rungocommand  这样

在 Azure 上创建和链接 MySQL 数据库

本快速入门介绍了如何使用 Azure 门户创建并连接 MySQL 数据库.在本教程中完成的所有操作均符合 1 元试用条件. 开始之前如果您还没有 Azure 账户,可以申请 1 元试用账户 步骤1:创建 MySQL Database on Azure1. 登录到 Azure 门户,点击"+新建"->"Databases"->"Azure 上的 MySQL 数据库".2. 输入必须的参数,点击"设置第一个数据库"在将

python操作数据库(MySQL、redis)

1.Python3操作MySQL数据库需要安装一个第三方模块(pymysql):pip install pymysql:操作redis需要安装redis模块(redis):pip install redis Python操作MySQL: import pymysql #导入模块# conn =pymysql.connect(host='211.149.147.233',user='byz',passwd='123456',db='byz',port=3306,charset='utf8')#创建

python爬虫循环导入MySql数据库

1.开发环境 操作系统:win10    Python 版本:Python 3.5.2   MySQL:5.5.53 2.用到的模块 没有的话使用pip进行安装:pip install xxx    xxx需要安装的模块 3.分析链接(博客官网:https://www.cnblogs.com/) 这里我们简单分析首页部分 经分析首页的分页系统链接变量是最后一个数字,所以可将访问的链接写成如下模式,这样执行的时候加个循环就能访问需要访问的所有页面内容 4.分析页面内容 整个页面 咱们需要的信息是博

Python测试开发-创建模态框及保存数据

Python测试开发-创建模态框及保存数据 原创: fin  测试开发社区  前天 什么是模态框? 模态框是指的在覆盖在父窗体上的子窗体.可用来做交互,我们经常会看到模态框用来登录.确定等等,到底是怎么实现这种弹出效果,bootstrap已经为我们提供了相应的组件. 1.界面原型 点击添加,弹出模态框, 然后输入 用户:tester, 消息:你好.如下图1所示: ▲图1 再点击保存,那么数据库就存入了以上输入的数据,查看界面的用户列表会显示tester,如下图2所示: ▲图2 2.开发过程 接下

Azure MySQL PaaS (3) 创建MySQL异地只读数据库 (Master-Slave)

<Windows Azure Platform 系列文章目录> Azure MySQL PaaS服务提供异地只读的功能,我们可以在主站点,比如Azure上海数据中心,创建MySQL主节点.主节点可以用来做OLTP联机事务处理. 然后在Azure北京数据中心,创建MySQL只读节点.只读节点可以用做报表展示. 在开始本文之前,请注意: 1.本文使用的是国内由世纪互联运维的Azure China,使用的是ASM模式:https://manage.windowsazure.cn 2.我们可以使用My