背景:
很多时候我们在链接数据库时都会遇到用跳转机链接数据库的场景,本文将记录一下改如何操作。
首先安装sshtunnel模块,如果是在anaconda中用pip进行安装的话,可能会报错,如下:
ERROR: Could not install packages due to an EnvironmentError: [WinError 5] 拒绝访问
解决办法pip install sshtunnel 后面加上–user
接下来说一下如何链接数据库:
server =sshtunnel.SSHTunnelForwarder(
('*********',22),#作为跳转机的ip和端口
ssh_username='***',#跳转机的用户名
ssh_password='********',#对应的密码
remote_bind_address=('***********',3306),#数据库的IP地址和端口
# local_bind_address=('127.0.0.1', 3306)#端口可以自己设置,没有冲突即可,不加这个参数也可
)
server.start()
conn=pymysql.connect(host='127.0.0.1',# 必须为本机回环地址,原因会在下面写出
port=server.local_bind_port,
user='***',数据库用户名
password='***********',#数据库密码
# charset='utf-8',#编码方式
database='*****'#要查询的database)
cursor=conn.cursor()
sql='select * from z_test where id=17962'
cursor.execute(sql)
conn.commit()
print(cursor.fetchall())
总结一下:
上述链接分为两部分,一、链接作为跳转机的服务器,并建立跳转机和目标数据库的远程访问。二、在跳转机的基础上通过数据库相关的各种参数访问数据库。
以上就是python ssh链接数据库的相关代码和步骤,另外还有一些需要注意的点:
1.写端口号的时候切记不要加引号!!!
2.最上面的那个连接信息一定是服务器的,不是数据库的!!!
3.绑定的本地端口号不一定非要是13306,只要没有端口冲突都行!!!
4.如果密码中有‘\’,切记一定要用‘\\’进行转义!!!
上述中出现不准确表述,欢迎留言讨论!