我本地直接连接mysql是连不上网络不通的,需要本地跳到远程机器上,然后从远程机器连接mysql服务,所以使用python实现如下:

import paramiko
from sshtunnel import SSHTunnelForwarder
import mysql.connector
import pandas as pd

# 设置SSH连接信息
ssh_host = '远程机器ip'
ssh_port = 端口号
ssh_username = '用户名'
ssh_password = '密码'

# 设置MySQL连接信息
mysql_host = 'mysql服务ip'
mysql_port = mysql端口号
mysql_user = '用户名'
mysql_password = '密码'
mysql_database = '数据库'
#定义一个函数 ,当with语句块结束,ssh连接自动关闭
def conquery(query):
    # 创建SSH隧道
    with SSHTunnelForwarder(
        (ssh_host, ssh_port),
        ssh_username=ssh_username,
        ssh_password=ssh_password,
        remote_bind_address=(mysql_host, mysql_port)
    ) as tunnel:
        # 通过隧道连接到MySQL数据库
        cnx = mysql.connector.connect(
            user=mysql_user,
            password=mysql_password,
            host='127.0.0.1',
            port=tunnel.local_bind_port,
            database=mysql_database
        )
        cursor = cnx.cursor()
        #query传入的是sql语句
        cursor.execute(query)
        # 获取查询结果,并转换为DataFrame格式
        columns = [desc[0] for desc in cursor.description]
        rows = cursor.fetchall()
        df = pd.DataFrame(rows, columns=columns)
        # 关闭数据库连接
        cnx.close()
        print("-------查询成功-----")
        return df #返回一个DataFrame对象,可以直接进行数据处理

测试代码如下:

query=""select * from a ""
df_1 = conquery(query)
print(df_1)

结束~~~~~~~

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐