python通过ssh链接sql(python通过阿里跳板机链接阿里数据库)
因为要链接公司数据库,使用的有是阿里的跳板机方式(其实我感觉就是ssh方式连接);之前找了很多教程,但是写的都不行,后来自己琢磨了一下,搞明白了连接方式:
(我这个方式也只是做一个参考,因为可能每个公司给数据库的连接方式都不一样;而且一定要是公司内网!!!)
1. 首先需要有个rsa文件,这个文件也就是一个private key(使用vscode打开看到第一行就有),要记住这个文件的位置;
2. 关于跳板机,也就是ssh,还需要三个东西:
ssh的网址,一般是ip地址,ssh_host: "10.88.666.116" (为了保密,这些详细数据都是虚假的,请根据字符串的名字阅读,主要要看ssh_host在代码、函数的什么位置)
ssh的用户名字, ssh_user: "niubi"
ssh的端口,ssh_port: 一般是22
3. 关于sql需要4个东西,
sql的网址:sql_hostname: "am-5c49huksycdyus4h90650.ads.aliyuncs.com"
sql的用户名: sql_useranme: "u_NIUBI_r"
sql的密码: sql_password: "nwhjjgKKHUUSfwsswx"
sql的端口: sql_port :3306
4. 接下来是安装python的包,我现在用的python版本是3.8,需要安装下面几个包:
import paramiko
import sshtunnel
import pymysql
import pandas as pd
import numpy as np
from datetime import date
from datetime import datetime
paramiko是读取ras文件的,sshtunnel是打通ssh通道的,pymysql是用来连接数据库的;
5. 整个的连接思路就是,使用paramiko打开rsa文件获得私有密钥,然后建立ssh通道;然后在这个通道下;建立连接sql的连接;然后将这连接传递到pandas里面即可;
代码如下:
mypkey = paramiko.RSAKey.from_private_key_file("C:\\Users\\yuanz\\Documents\\niubi_rsa")sql_hostname = "am-2zedshyczbydsgy0.ads.aliyuncs.com"
sql_username = "u_niubihhh_r"
sql_password = "nwSfsdyuachuaqbhjscggAJ1G"sql_port = 3306ssh_host = "18.1.3.106"
ssh_user = "niubi"
ssh_port = 22
sql_ip = "18.1.3.106"
start_date = datetime.now()with sshtunnel.SSHTunnelForwarder((ssh_host, ssh_port), ssh_username=ssh_user, ssh_pkey=mypkey,remote_bind_address=(sql_hostname, sql_port)) as tunnel:conn = pymysql.connect(host='127.0.0.1', user=sql_username, passwd=sql_password, db=dbname,port=tunnel.local_bind_port)print('start to connect server\n')data = pd.read_sql_query(query_str, conn)print("day data shape: ", data.shape)print('done!\n')end_date = datetime.now()print(f"use time: {end_date - start_date}")conn.close()
上面有个dbname,这个是你sql数据库里面的库的名字,然后query_str就是你的sql语句;
上面的pymysql.connect里面的host参数是127.0.0.1原因是因为这里你的ssh通道已经打开了,所以连接的就已经是你的云端的服务器了;
我后来为了方便,将这一些操作,保存到函数里面,也方便我直接调用,后面这么做也确实为我减轻了不少工作:
import paramiko
import sshtunnel
import pymysql
import pandas as pd
import numpy as np
from datetime import date
from datetime import datetimedef downloadfrom_server(query_str, dbname="tableau_data"):""":param query_str::param dbname::return:"""mypkey = paramiko.RSAKey.from_private_key_file("C:\\Users\\yuanz\\Documents\\niubi_rsa")sql_hostname = "am-2ze85cdbhkdhsggtfvdrjxdxx.ads.aliyuncs.com"sql_username = "u_huzheng_r"sql_password = "nwSfwsOdsbyvdbhhsagsdckjavgskhh1G"sql_port = 3306ssh_host = "18.1.3.106"ssh_user = "niubi"ssh_port = 22sql_ip = "18.1.3.106"start_date = datetime.now()with sshtunnel.SSHTunnelForwarder((ssh_host, ssh_port), ssh_username=ssh_user, ssh_pkey=mypkey,remote_bind_address=(sql_hostname, sql_port)) as tunnel:conn = pymysql.connect(host='127.0.0.1', user=sql_username, passwd=sql_password, db=dbname,port=tunnel.local_bind_port)print('start to connect server\n')data = pd.read_sql_query(query_str, conn)print("day data shape: ", data.shape)print('done!\n')end_date = datetime.now()print(f"use time: {end_date - start_date}")conn.close()return data
python通过ssh链接sql(python通过阿里跳板机链接阿里数据库)相关推荐
- php 跳板机连接mysql,使用python如何通过跳板机连接MySQL数据库
生产环境中,为了安全起见,大多数的数据库是无法在本地直接访问的,需要先连接跳板机,然后通过跳板机访问.创业天下测试数据库也是采用这种方法连接数据的,那么我们应该怎么通过Python去连接数据库呢,代码 ...
- python和sql_Python和SQL 2017的强大功能
Python和SQL Server 2017的强大功能 原文来自:https://www.red-gate.com/simple-talk/sql/sql-development/power-pyth ...
- 如何自学python数据分析-Python学习干货 |如何用Python进行数据分析?
为什么选择Python进行数据分析? Python是一门动态的.面向对象的脚本语言,同时也是一门简约,通俗易懂的编程语言.Python入门简单,代码可读性强,一段好的Python代码,阅读起来像是在读 ...
- 用python实行财务报告分析,用python做财务数据分析
Python是否有用于财务报表分析的库 谷歌人工智能写作项目:小发猫 python如何做数据分析 用Python做数据分析,大致流程如下:1.数据获取可以通过SQL查询语句来获取数据库中想要数据typ ...
- windows开启ssh当跳板机
1.先安装ssh客户端与服务器 点击可选功能,搜索ssh 如图所示,即安装好了ssh客户端与服务器,此时必要的组件已经安装完毕. 2.开启ssh服务 以管理员的身份打开cmd(不然开启ssh服务有可能 ...
- linux ssh scp 使用跳板机 访问 远程服务器
处于防火墙内部的主机往往需要通过跳板机才能访问互联网上的远程服务器.如下图所示: +--------------------+ +---------------------+ +----------- ...
- Linux生成ssh公钥免密码登录远程主机和Xshell跨跳板机登录
Linux生产秘钥.公钥可以免密码登录远程主机,因为公司内网host设置了禁止直接登录,需经过跳板机ssh登录. #在登录host(或跳板机)生成认证密钥(私钥公钥对) 1:ssh-keygen ...
- python学习之路:python连接阿里云ODPS
python学习之路:python连接阿里云ODPS 前言 本人最近在学习使用ODPS,希望把学习过程记录下来,方便自己查阅. 1.安装ODPS pip install ODPS 2.连接阿里云odp ...
- python mysql倒序_day40:MySQL:python操作mysql:pymysql模块SQL注入攻击
目录 part1:用python连接mysql 1.用python连接mysql的基本语法 创建连接conn→创建游标对象cursor→执行sql语句execute→获取数据fetchone→释放游标 ...
最新文章
- 我所经历的京东618
- 如何获取服务器上文件的hashcode,java获取文件hashcode
- 计算机软件中os具有什么功能,[计算机软件及应用]OS第三章1.ppt
- 机器学习入门学习资源
- 树莓派进阶之路 (014) - 树莓派远程连接的三种方式总结
- UILabel的行间距,字间距处理
- Muse-UI +Vue2.0框架开发环境搭建
- ecshop最全去版权
- python 空列表对象的布尔值_python – 从TensorFlow对象中检索数据 – 来自correct_prediction的布尔值列表...
- git push报错
- 小米3g刷高格固件_小米路由器3g刷第三方固件遇到的一些坑
- hp打印机装不上服务器系统,winxp系统无法安装HP打印机驱动程序如何解决
- 用python实现传染病模型传染病模型
- c语言输出字符太阳,〖作业〗 C语言程序设计
- 网络流24题 餐巾计划(费用流)
- 【DPD数字预失真】射频功放的Volterra级数数字预失真系统开发
- js escape()_unescape().html
- 王者荣耀 服务器显示不出100区,王者荣耀为什么荣耀战区显示不出来
- 查看java 多少位_如何查看jdk的版本是32位还是64位
- GBase 8a 数据抽取工具orato8a用法介绍