我试图连接到远程MySQL服务器,特别是使用Python 2.7 / pandas / sqlalchemy。
我安装了mysql-connector-python,然后在我的终端启动了iPython,然后尝试了:
import pandas as pd
from pandas import Series, DataFrame
from sqlalchemy import create_engine
engine = create_engine('mysql+mysqlconnector://scott:tiger@localhost:3306/foo')
test_q = pd.read_sql_query('SELECT COUNT(users.id) FROM users', engine)
当然,这里的create_engine()不是实际的连接,它只是一个例子。
我收到错误:
NotSupportedError: (NotSupportedError) Authentication plugin 'mysql_old_password' is not supported None None
我很难理解这个错误以及如何解决它。我认为可能存在一些事实,即我只是将密码作为字符串发送,而可能需要some type encryption。
所以基于this documentation,我试过了:
import hashlib
hash_object = hashlib.sha256(b'tiger')
engine = create_engine('mysql+mysqlconnector://scott:' + hash_object + '@localhost/foo')
提出错误:
TypeError: cannot concatenate 'str' and '_hashlib.HASH' objects
所以现在我认为我需要使用the engine creation API来创建连接对象。 custom dbapi connection可能是另一种可能性,但我仍然处于亏损状态,但遵循了其中任何一个的指示。有什么想法吗?