#mysql #python-3.x #ssh-tunnel
#mysql #python-3.x #ssh-туннель
Вопрос:
Python: 3.8.5 sshtunnel:0.2.1 mysqlclient: 1.4.6 mysql-connector: 2.2.9
Я использую SSHTunnelForwarder для извлечения данных из базы данных Mysql. Вот скрипт, который я использую для подключения через SSH к БД:
elif self._remote == 1:
with SSHTunnelForwarder(
(self._host, 22),
ssh_password = self._ssh_password,
ssh_username = self._ssh_login,
remote_bind_address = (self._remote_bind_address, 3306)) as server:
print('Connection:',server.local_bind_address)
cnx = MySQLdb.connect(host = '127.0.0.1',
port = server.local_bind_port,
user = self._db_user,
passwd = self._db_password,
db = self._db_name)
cursor = cnx.cursor()
res = pd.read_sql(request, con = cnx)
cursor.close()
cnx.close()
Пример запроса может быть в следующей форме:
request = 'SELECT * FROM conjunctions AS c LEFT JOIN events AS e ON e.eventId=c.eventId ORDER BY e.eventId;'
Скрипт возвращает мне действительный ответ, но не завершает работу в оболочке.
threading.enumerate() выведет это:
[<_MainThread(MainThread, started 139701046208320)>, <paramiko.Transport at 0x74850ac0 (unconnected)>, <paramiko.Transport at 0xae9e4e80 (unconnected)>]
Я обнаружил, что эта проблема связана с той же проблемой, однако предлагаемые решения для меня не работают.
Закрытие туннеля вручную с помощью a server.stop()
не работает.
Добавление ssh_server.daemon_forward_servers = True
, как предложено в упомянутой выше проблеме, не работает.
Чаще всего эта проблема возникает примерно 4/5 раз при запуске скрипта.
Любая помощь, чтобы понять, что происходит, была бы весьма признательна.
Спасибо.