首页 > 数据库 >python ssh链接Mysql数据库

python ssh链接Mysql数据库

时间:2023-01-09 13:56:16浏览次数:42  
标签:python 端口 db cursor ssh Mysql 3306 id

from sshtunnel import SSHTunnelForwarder
import time, datetime, pymysql, json, requests


def ssh_mysql(sql, method):
# SSH 信息
ssh_ip = ''
ssh_port = 2214 # type:int
ssh_username = 'root'
ssh_password = ''
# DB信息
db_user = 'root'
db_password = ''
db_host = '127.0.0.1'
database = 'bigadmin'

with SSHTunnelForwarder(
(ssh_ip, ssh_port),
ssh_username=ssh_username,
ssh_password=ssh_password,
remote_bind_address=('127.0.0.1', 3306)) as server:

       #必须为本机回环地址,其实就是一个端口映射,首先通过 sshtunnel.SSHTunnelForwarder 进行端口映射,将远程服务器的3306端口映射到本地的3306端口,再连接本地的端口,
       #那么后续对本地3306端口的操作其实都可以视为对线上服务器3306端口的操作,理论上来说,PuTTY也是进行了相同的操作,以此达到内网穿透的目的。


db = pymysql.connect(host=db_host,
port=server.local_bind_port,
user=db_user,
passwd=db_password,
database=database,
charset='utf8')
cursor = db.cursor()

if method == 'get':
cursor.execute(sql)
data = cursor.fetchall()
db.close()
return data

if method == 'add':
cursor.execute(sql)
insert_id = cursor.lastrowid
db.commit()
db.close()
return '添加的id是:{}'.format(insert_id)

if method == 'edit':
cursor.execute(sql)
edit_id = cursor.lastrowid
db.commit()
db.close()
return '更新的id是:{}'.format(edit_id)

if method == 'del':
cursor.execute(sql)
del_id = cursor.lastrowid
db.commit()
db.close()
return '删除的id是{]'.format(del_id)
# tips:
#1.写端口号的时候切记不要加引号!  一般是type:int
#2.绑定的本地端口号不一定非要是3306,只要你本地没有使用的端口占用,没有端口冲突都行!
#3.如果密码中有‘\’,切记一定要用‘\\’进行转义!!!


标签:python,端口,db,cursor,ssh,Mysql,3306,id
From: https://www.cnblogs.com/wy919/p/17035782.html

相关文章

  • python 每天一个知识点 第四天
    字符串:一,字符串的定义:使用单引号’你可以用单引号指示字符串,就如同’这是一句话’这样str='这是一句话'print(str)使用双引号"在双引号中的字符串与单引......
  • [oeasy]python0041_ 转义字符_转义序列_escape_序列_sequence
    转义序列回忆上次内容上次回顾了5bit-Baudot博多码的来历从莫尔斯码到博多码原来人来收发电报现在机器来收发电报输入方式从电键改成键盘......
  • Python打印日志——logging库
    Python打印日志——logging库1、主要实现步骤(1)导入logging包、traceback包(可用于打印详细异常信息)(2)设置日志记录器的级别:DEBUG或者其他的级别(3)创建一个流式的日志处理......
  • Python实现画板、电子时钟、计算器、桌面放大镜
     1、Python实现画板功能importtkinterimportwx.stcimporttkinter.simpledialogimporttkinter.colorchooserimporttkinter.filedialogfromPILimportImage......
  • docker安装并运行python文件
    1、使用docker安装python环境,并运行python程序文件 首先,创建目录:/home/python/python-docker-app并进入python-docker-app目录下,创建dockerfile文件命令:vimdock......
  • Python+Selenium
    python+Selenium学习Selenium组件SeleniumIDE:是一个测试集成开发环境,可以结合FF录制脚本,并对脚本编辑和调试特点:1.很容易在页面上就行录制​2.能自动通......
  • Python-列表
    列表中的每一个元素都是可变的。这意味着我们可以在列表中添加、删除、修改元素。 列表中的元素是有序的。Weekday=['Monday','Tuesday','Wednesday','Thursday','F......
  • k8s运行mysql主从架构
    namespacemysql-ns.yamlapiVersion:v1kind:Namespacemetadata:labels:kubernetes.io/metadata.name:wgs-mysqlname:wgs-mysql创建ns#kubectlapply......
  • Python_sqlite3与sqlite数据库交互
    基础功能importsqlite3#sqlite一个文件就是一个库#连接test.db数据库,没有就创建conn=sqlite3.connect('test.db')#创建一个cursorcur=conn.cursor()#......
  • mysql 合并数据集union
    在mysql中,可以利用UNION操作符来合并查询结果,该操作符用于将两个以上的SELECT语句的查询结果合并到一起,然后去除掉相同的记录;语法“查询语句1union查询语句2union..........