0
SQLALCHEMY経由でMySQLに接続する際に問題を見つけ出すための助けが必要です。 以下は、私が試したものです:SQLALCHEMY経由のMysqlへのPython接続
from sqlalchemy import create_engine
import pandas
def return_connection_string(database_name, database_user, database_password, database_host, database_port):
try:
connection_string = 'mysql+mysqlconnector://' + database_user + ':' + database_password + '@' + database_host + ':' + database_port + '/' + database_name
print(connection_string)
return connection_string
except Exception as e:
print('Encountered error while generating connection string for MySQL!')
print(e)
def return_connection_object(database_name, database_user, database_password, database_host, database_port):
try:
connection_string = return_connection_string(database_name, database_user, database_password, database_host, database_port)
engine = create_engine(connection_string).connect()
return engine
except Exception as e:
print('Encountered error while connecting to MySQL database!')
print(e)
mysql_conn = return_connection_object('db_name', 'db_user', 'db_pass', 'xyz.abc.com', '4100')
df = pandas.read_sql_query('select distinct table_name from information_schema.tables', mysql_conn)
print(df.shape)
mysql_conn.close()
上記のスクリプトは完全に正常に動作して所望の出力を返します。次のように私はクラスベースのアプローチをしようとすると、 問題は次のとおりです。
from sqlalchemy import create_engine
import logging
class Connection_class(object):
def __init__(self):
pass
def return_connection_string(self, database_name, database_user, database_password, database_host, database_port):
try:
connection_string = 'mysql+mysqlconnector://' + database_user + ':' + database_password + '@' + database_host + ':' + database_port + '/' + database_name
print(connection_string)
return connection_string
except Exception as e:
print('Encountered error while generating connection string for MySQL!')
print(e)
def return_connection_object(self, database_name, database_user, database_password, database_host, database_port):
try:
connection_string = self.return_connection_string(database_name, database_user, database_password, database_host, database_port)
engine = create_engine(connection_string).connect()
return engine
except Exception as e:
print('Encountered error while connecting to MySQL database!')
print(e)
私は、MySQLと呼ばれるパッケージで上記のクラスをラップ。 main.pyは以下の通りです:
from mysql import connector
import pandas
mysql_obj = connector()
mysql_conn = mysql_obj.return_connection_object('db_name', 'db_user', 'db_pass', 'xyz.abc.com', '4100')
df = pandas.read_sql_query('select distinct table_name from information_schema.tables', mysql_conn)
mysql_conn.close()
私が手にエラーがある: 型オブジェクト「Connection_class」は、デバッグには属性「paramstyle」
を持っていない私は、エラーがreturn_connection_object機能から発信ましたどういうわけか、同じ関数がスクリプトとして実行されたときに接続オブジェクトを返している間にnullを返しています。
任意のリードが役立ちます。前もって感謝します。