python - 在使用 python、pymysql 和 SSHTunnel 查询期间丢失与 MySQL 服务器的连接
问题描述
我正在使用 SSHTunnel 连接到 Mysql。我打算将数据集中的所有表导出到 CSV。这是代码
def OpenSSHTunnel():
global server
server = SSHTunnelForwarder(
('*.*.*.*', 22),
ssh_username="",
ssh_pkey="C:/Users/Administrator/Desktop/***",
remote_bind_address=('*.*.*.*', 3306),
local_bind_address=('0.0.0.0', 10022))
def exportToCsv(db):
conn = pymysql.connect(host='127.0.0.1',
port=10022,
user='**',
passwd='**',
db=db)
cur = conn.cursor()
#cur.execute("set global max_allowed_packet=67108864")
# RETRIEVE TABLES
cur.execute("SHOW TABLES")
tables = []
for row in cur.fetchall():
tables.append(row[0])
for t in tables:
# SELECT STATEMENTS
cur.execute("SELECT * FROM `{}`".format(t))
tempcsv = '{}.csv'.format(t)
rows = cur.fetchall()
fp = open(tempcsv, 'w',newline='',encoding='utf-8')
writer = csv.writer(fp)
writer.writerow([i[0] for i in cur.description]) # COLUMN HEADERS
writer.writerows(rows)
fp.close()
我收到错误“2013,'在查询期间丢失与 MySQL 服务器的连接'”那么有没有办法解决这个问题?
我尝试设置全局 max_allowed_packet,但出现错误“1227,'访问被拒绝;您需要(至少一个)此操作的 SUPER 权限'”
解决方案
我无法告诉你为什么,但我遇到了这个问题,它与 SSH 隧道有关。出于某种原因,从方法“返回”隧道/连接并传递它似乎不起作用。我尝试在主要方法中在隧道和连接中做所有事情,并为我修复了它。
推荐阅读
- beautifulsoup - 按列表元素内的类从 html 元素中抓取文本
- php - 在一个链接中使用双倍时间 $_GET 标题
- php - sql pdo php 在变量中的位置
- python - 访问系列中的数据
- azure - 在 Azure 逻辑应用中触发 SFTP 文件
- jquery - 如何将类添加到自动包装的父级
- r - 优化慢 for 循环
- python - 将 CSV 数据插入 AWS RDS MySQL DB 时出现错误消息 1054“‘字段列表’中的未知列。请告诉我如何解决此错误
- r - read_delim converting values to sci notation even when col_type set to character
- java - 使数百万个小型二进制文件始终可用于测试的最佳解决方案是什么?