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.如果密码中有‘\’,切记一定要用‘\\’进行转义!!!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决