我试着按照炼金术快速入门指南(http://flask-sqlalchemy.pocoo.org/2.3/quickstart/). 当我执行任何数据库操作时,例如 db.create_all()
,我得到错误 sqlalchemy.exc.OperationalError: (_mysql_exceptions.OperationalError) (2059, "Authentication plugin 'caching_sha2_password' cannot be loaded: The specified module could not be found.\r\n")
我知道这是因为mysql8中的默认标识方法发生了变化。我打开mysqlshell运行这些-
CREATE USER 'myapp'@'localhost' IDENTIFIES WITH mysql_native_password BY 'password';
GRANT ALL PRIVILEGES ON *.* 'myapp'@'localhost';
看起来还不错。但是,即使在更新配置详细信息以将此新用户用于
app = Flask(__name__,static_url_path='')
app.config['SQLALCHEMY_DATABASE_URI']='mysql:////myapp:password@localhost/mydatabase'
db = SQLAlchemy(app)
同样的错误仍然存在。有什么想法吗?
3条答案
按热度按时间khbbv19g1#
试试这个:
http://docs.sqlalchemy.org/en/latest/core/engines.html#sqlalchemy.engine.url.url.params.query
rta7y2nd2#
这不是“解决方案”,但对于倒霉的谷歌用户来说,这就是我所做的-我卸载了python3.7并恢复到python3.6,以便使用mysql的官方python连接器。我安装了pymysql,并将配置中的uri更改为mysql+pymysql://等。这似乎给我留下了一个运行正常的应用程序。
g6ll5ycj3#
我通过使用
pymysql
url中的方言:mysql+pymysql://root:root@localhost:3306/database