設定後:ローカルのWindowsマシンで、SpyderをPython 3.5で実行します。さらに、MariaDBを備えたリモートUbuntuサーバを持っています。私がしたいのは、SSHトンネルとsqlalchemyを使ってデータベースからSpyderにデータをロードすることです。 SSHトンネルを使用してリモートサーバー上のMariaDBからデータを読み取る
私が探しています2つのソリューション
は以下のとおりです。(I)サーバーへのSSHトンネルの使用のPuTTY hereを説明し、その後、スパイダーのように:
import mysql.connector
from sqlalchemy import create_engine
import pandas as pd
engine = create_engine('mysql+mysqlconnector://un_db:[email protected]/db')
dbconn = engine.connect()
rslt = dbconn.execute("SELECT * FROM table WHERE col1=x AND col2=y;")
df = pd.DataFrame(rslt.fetchall())
df.columns = rslt.keys()
これはパフォーマンスの面でうまく機能私はPuTTYを開いて、そのプロセスの特別なステップとしてSSHトンネルを構築しています。これPuTTYの余分なステップを回避
(ⅱ)使用パッケージsshtunnel、:
from sshtunnel import SSHTunnelForwarder
import mysql.connector
from sqlalchemy import create_engine
import pandas as pd
server = SSHTunnelForwarder(
(hostname, 22),
ssh_username=un_server, \
ssh_password=pw_server,
remote_bind_address=('127.0.0.1', 3306))
server.start()
engine = create_engine('mysql+mysqlconnector://un_db:[email protected]:' \
+ str(server.local_bind_port) + '/db')
dbconn = engine.connect()
rslt = dbconn.execute("SELECT * FROM table WHERE col1=x AND col2=y;")
df = pd.DataFrame(rslt.fetchall())
df.columns = rslt.keys()
SSHトンネルを構築するには、すべて正常に動作します(と思う)が、私はクエリを実行すると、スパイダーでIPythonコンソールがハングアップします。
質問:私のユースケースはPuTTYで動作しますが、パッケージsshtunnelでは動作しないのはなぜですか?そして、PuTTY経由のSSHトンネルとパッケージsshtunnel経由のSSHトンネルの違いはありますか?