从PythonAnywhere下载SQL Server表后,SSH隧道不会关闭

时间:2017-07-30 19:18:19

标签: python ssh pythonanywhere ssh-tunnel

我正在使用their description之后的ssh隧道从PythonAnywhere.com上的SQL服务器下载表。使用下面的代码,在下载表格方面一切正常,但代码会挂起tunnel.close()。关于如何阻止它挂起的任何建议?

from __future__ import print_function

from mysql.connector import connect as sql_connect
import sshtunnel
from sshtunnel import SSHTunnelForwarder
from copy import deepcopy
import cPickle as pickle
import os
import datetime

sshtunnel.SSH_TIMEOUT = 5.0
sshtunnel.TUNNEL_TIMEOUT = 5.0

remote_bind_address = ('{}.mysql.pythonanywhere-services.com'.format(SSH_USERNAME), 3306)
tunnel = SSHTunnelForwarder(('ssh.pythonanywhere.com'),
                            ssh_username=SSH_USERNAME, ssh_password=SSH_PASSWORD,
                            remote_bind_address=remote_bind_address)
tunnel.start()
connection = sql_connect(user=SSH_USERNAME, password=DATABASE_PASSWORD,
                         host='127.0.0.1', port=tunnel.local_bind_port,
                         database=DATABASE_NAME)

print("Connection successful!")
cursor = connection.cursor()                      # get the cursor
cursor.execute("USE {}".format(DATABASE_NAME))    # select the database

# fetch all tables
cursor.execute("SHOW TABLES")
tables = deepcopy(cursor.fetchall()) # return data from last query
for (table_name,) in tables:
    if 'contribute' in table_name:
        print(table_name)

# may hang
connection.close()
tunnel.close()

0 个答案:

没有答案