pythonでmysqlに接続する際にローカルのDBには接続ができるがリモートのDBに接続できない
解決したいこと
xサーバーにflaskで作成したHPをデプロイしている途中なのですが、
xサーバーのリモートDBにローカル環境から試験的に接続しようすると下記エラーが発生してしまいます。
AttributeError: 'NoneType' object has no attribute 'cursor'
発生している問題・エラー
import datetime
from flask import Flask, render_template, request, redirect, url_for
import mysql.connector
from mysql.connector import Error
from dotenv import load_dotenv
load_dotenv()
import os
"""
*DB接続用メソッド
*引数(ホスト名、ユーザー名、パスワード、DB名)
*接続を返す
"""
def server_connection(HOST_NAME, USER_NAME, USER_PASSWORD, DATABASE_NAME):
connection = None
try:
connection = mysql.connector.connect(
host=HOST_NAME,
user=USER_NAME,
passwd=USER_PASSWORD,
database=DATABASE_NAME
)
except Error as e:
with open('error_log.txt', 'a') as f:
f.write("%s\n" % e)
return connection
"""
*全情報取得用メソッド
*引数(DB名)
*全情報を返却
"""
def select_schedule(DATABASE_NAME, item_name):
conn = server_connection(HOST_NAME, USER_NAME, USER_PASSWORD, DATABASE_NAME)
cursor = conn.cursor()
try:
cursor.execute('SELECT * FROM schedule_master WHERE ItemName=%s ', (item_name,))
items = cursor.fetchall()
cursor.close()
conn.close()
except Error as e:
with open('error_log.txt', 'a') as f:
f.write("%s\n" % e)
return items
HOST_NAME='localhost'
USER_NAME='root'
USER_PASSWORD='DRmg'
HOST_NAME='■■■.■■.■■.■■'
USER_NAME='■■■■■■■■■■■_■■■■'
USER_PASSWORD='■■■■■■■■■■■■'
HOST_NAME = '■■■■■■■.■■■■■■■.jp'
USER_NAME = '■■■■■■■■■■■_■■■■'
USER_PASSWORD = '■■■■■■■■■■■■'
AttributeError: 'NoneType' object has no attribute 'cursor'
ローカルDBの際は問題なく接続することができるのですが、
リモートに接続すると接続情報に誤りはないはずなのですが、接続するエラーが出てしまいます。
ホスト名で試してダメだったので、IPアドレスで試したのですが、そちらでも同様のエラーが発生してしまいました。
$ mysql -u ■■■■■■■■■■■_■■■■ -p
Enter password:■■■■■■■■■■■■
cmdでログインを行えるのでUSER_NAMEとUSER_PASSWORDは間違っていないと考えています。
IPアドレスとホスト名に関しては以下手順で確認を行いました。
xサーバーのサーバーパネルにログイン
↓
アカウント>サーバー情報
↓
ホスト名:■■■■■■■.■■■■■■■.jp
IPアドレス:■■■.■■.■■.■■
自分の認識ではコードの書き方に問題はないと思うのですが、接続が行えないということで詰まってしまっています。
接続できない理由等をご存じの方がいらっしゃいましたら教えていただけますと幸いです。
最後まで読んでいただきありがとうございます。
何卒よろしくお願いいたします。