質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
Jupyter

Jupyter (旧IPython notebook)は、Notebook形式でドキュメント作成し、プログラムの記述・実行、その実行結果を記録するツールです。メモの作成や保存、共有、確認などもブラウザ上で行うことができます。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

2回答

900閲覧

mysql.connectorによる接続が終わらない?

mahc

総合スコア33

Jupyter

Jupyter (旧IPython notebook)は、Notebook形式でドキュメント作成し、プログラムの記述・実行、その実行結果を記録するツールです。メモの作成や保存、共有、確認などもブラウザ上で行うことができます。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2020/01/28 02:57

編集2020/01/29 01:34

前提・実現したいこと

mysql.connectorを使ってdatabaseに接続したい!

###環境
windows10からYOURPC =(FIREWALL A|)=[INTERNET]=(|FIREWALL B)=(SSHFWDHOST)=(DBHOST)
でanacondaから jupyter notebookを用いてPython3.7で書いてます.
その際に,mysqlに接続を試みています.
全く同じコードをmacのdockerでjupyter notebookを用いてpython3.7で書くと通りました.

起こっているエラー

Jupyter notebookの実行が終わらないです...

該当のソースコード

python

1 2import numpy as np 3import pandas as pd 4import pandas.io.sql as psql 5import matplotlib.pyplot as plt 6import seaborn as sns 7import sqlalchemy as sa 8import datetime 9import pickle 10import os 11import const 12from pandas.io import sql 13from sklearn.externals import joblib 14from more_itertools import chunked 15from more_itertools import collapse 16from sqlalchemy import create_engine 17from sklearn.ensemble import RandomForestRegressor 18from sklearn.model_selection import train_test_split 19from sklearn.metrics import r2_score 20from sklearn.metrics import mean_squared_error 21date_format = '%Y-%m-%d %H:%M:%S' 22from sshtunnel import SSHTunnelForwarder 23import MySQLdb 24import mysql.connector 25 26server = SSHTunnelForwarder( 27('SSHFWDHOST', SSHFWDPORT), 28ssh_username="SSHUSER", 29ssh_password="SSHPASS", 30remote_bind_address=('DBHOST', DBPORT) 31) 32server.start() 33cnn = mysql.connector.connect(host='DBHOST', 34 port = server.local_bind_port, 35 db='DB', 36 user='DBUSER', 37 passwd='DBPASS', 38 charset='utf8', 39 buffered=True)

試したこと

実行が終わるまで30分ほど待ってみた
cnnの部分にエラーが起こることまで分かった.

補足情報(FW/ツールのバージョンなど)

windowsのローカル環境でjupyter notebookを用いてmysqlのデータベース接続を試みている.
その際,windowsではdockerを用いていない.
他のpc(mac)からは接続でき,その際のソースコードは全く上と同じ
個人情報伏せてます.
よろしくお願いいたします.

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

dameo

2020/01/28 12:26

伏せてる部分が間違ってるんだと思いますし、1つずつ検証されてもおらず、環境すら書かれていない話を結果だけ動かないと言われても、「わざわざあなたに聞く手間が面倒すぎて(そもそもあなたに伝わらない可能性大)」誰も手をつけないと思いますよ。 最低限仮名でも入れることと、複数の試したことを具体的かつ正確に書くことが必要です。 またネットワークの説明、事前準備の状況も必要でしょう。
mahc

2020/01/28 23:54

わざわざ,ありがとうございます! 全然,そのことが理解できてなかったようです. 以後,気を付けます...
dameo

2020/01/29 00:48

多分全然伝わっていないように思います。 まずどういう環境なのか書いてもらえますか? それから、 DBが動作しているホストをDBHOSTとします。 DB上のユーザー名をDBUSERとします。 DB上のDBUSERのパスワードをDBPASSとします。 DBの使っているポートをDBのPORTとします。 あなたが操作しているPCの名前をYOURPCとします。 YOURPC上であなたがログインしているユーザーをYOUとします。 YOURPC上のYOUのパスワードをYOURPASSとします。 sshでポートフォワードする際にローカルで使用しているポートをSSHFWDPORTとします。 ###を使わずに書き直してください。
mahc

2020/01/29 01:04

本当にすいません... お手数をお掛けします...
dameo

2020/01/29 01:19

環境の説明が足りません。 YOURPC =(FIREWALL A|)=[INTERNET]=(|FIREWALL B)=(SSHFWDHOST)=(DBHOST) ってことですか? また、 SSHFWDHOST SSHUSER SSHPASS の説明をしてください。
dameo

2020/01/29 01:23

あと、WindowsからCPythonを直に使ってpipでインストールしたjupyterを使ってるってことですか? それともanacondaを使っていますか? それともWSLやVirtualBoxなどを使っていますか?
mahc

2020/01/29 01:33

YOURPC =(FIREWALL A|)=[INTERNET]=(|FIREWALL B)=(SSHFWDHOST)=(DBHOST) でanacondaです. 書きます.
mahc

2020/01/29 01:37

dameoさん,アドバイスありがとうございます. 大変,勉強になりました.
dameo

2020/01/29 01:47

conda --version conda list sshtunnel conda list mysql-connector-python の結果などを次は貼ってもらう必要があったんですけどね… その次は切り分けのために、1つずつsshの接続確認、転送ポートの確認、最後にmysqlへの接続確認とその現象の確認。必要であればパケット解析込みです。 多分現象からはパッケージのインストール方法に問題か、些細なミスがあったのではないかと思います。 少なくとも次からは説明をしっかりして、「他人に分かるように現象の説明と、原因・解決方法の提示」をしてください。
mahc

2020/01/29 01:58

「他人に分かるように現象の説明と、原因・解決方法の提示」,了解です. 以後気を付けます. わざわざ,お時間を割いてアドバイスして頂きまして感謝に絶えません.
guest

回答2

0

一応出来ないというのもおかしいので、検証させてもらいました。
結論から言うと、出来ました。
コネクタの問題ではなく、接続時のホストパラメータがおかしかったです。

cmd

1>conda --version 24.8.2 3>conda install -c anaconda mysql-connector-python 4>conda install -c conda-forge sshtunnel 5>jupyter notebook

python

1from sshtunnel import SSHTunnelForwarder 2import mysql.connector 3 4server = SSHTunnelForwarder( 5'SSHFWDHOST', 6ssh_username="SSHUSER", 7ssh_password="SSHPASS", 8remote_bind_address=('DBHOST', DBPORT) 9) 10server.start() 11cnn = mysql.connector.connect(host='localhost', 12 port = server.local_bind_port, 13 db='DB', 14 user='DBUSER', 15 passwd='DBPASS', 16 charset='utf8') 17print(cnn.is_connected())

投稿2020/01/29 02:17

編集2020/01/29 02:19
dameo

総合スコア943

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mahc

2020/02/03 01:14

ありがとうございます! 試してみます!
guest

0

自己解決

いっそのことコネクタを変えることにしました.
pymysqlを用いると繋がりました.
mysql.connectorを使っていたのはそれでしかできない作業があったからなのですが,pymysqlで何とか解決法を見つけることができました.

投稿2020/01/29 01:36

mahc

総合スコア33

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問