在通过SQLALCHEMY连接MySQL时需要帮助解决问题。 以下是我的尝试:
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,而完全相同的函数在作为脚本运行时返回连接对象。
任何线索都会有所帮助。提前谢谢。
答案 0 :(得分:0)
您用于该程序包的名称似乎非常通用,可能与其他connnector
冲突。可以尝试重命名导入的模块和对象,以消除这种可能的错误来源。