pymysql 怎么连接需要通过 ssh 跳转的数据库呢

2019-01-21  本文已影响0人  cokeonemore

本地无法连接mysql,必须连到服务器上才能访问到msyql,gui工具一般都支持,python的话需要用到sshtunnel库。

代码如下:

import pymysql
from sshtunnel import SSHTunnelForwarder

def onlinemysql(sql_select):

    """使用pymysql模块通过SSHTunnelForwarder隧道连接mysql"""

    with SSHTunnelForwarder(
             ('跳板机服务器地址' , '跳板机port'),    # B机器的配置
             ssh_password='跳板机密码',
             ssh_username='跳板机用户名',
             remote_bind_address=('数据库服务器地址' ,  '数据库port')) as server:  # A机器的配置

        db = pymysql.connect(host='127.0.0.1',              # 此处必须是是127.0.0.1
                               port=server.local_bind_port,
                               user='数据库服务器用户名',
                               passwd='数据库服务器密码',
                               charset = 'utf8',
                               db='待连接数据库名')

        # 使用 cursor() 方法创建一个游标对象 cursor
        # 设置游标类型,默认游标类型为元祖形式
        # 将游标类型设置为字典形式
        cursor = db.cursor(cursor=pymysql.cursors.DictCursor)

        # 使用 execute()  方法执行 SQL 查询
        cursor.execute(sql_select)

        db.commit()

        # 使用 fetchone() 方法获取单条数据.
        data = cursor.fetchone()

        print("通过mysql查询到的数据 : %s " % data)

        # 关闭数据库连接
        db.close()

    return data
上一篇下一篇

猜你喜欢

热点阅读