python通过远程机器连接mysql数据库
【代码】python通过远程机器连接mysql数据库。
·
我本地直接连接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)
结束~~~~~~~
更多推荐




所有评论(0)