LoginSignup
0
1

Flask, SQL Alchemy, MySQLを使用して、PythonAnywhereでデプロイするときにつまづいた箇所

Posted at

はじめに

これは書きかけです。詳しいファイル構成などをあとで書き込みます。

Flask

SQL Alchemy

MySQL

MySQLが8.0になったので、Homebrew経由でインストールしたMySQLは、認証方法がcashing_sha2_passwordである。しかし、mysql.connectorは、それに対応していない。そこで、MySQLの方の認証方法を、パスワードを入れて認証する古い形式に変更する必要がある。

以下の方法を行ってもできなかった!

mysqlを立ち上げて、以下のコマンドを入力する。※コピペしたらシングルクオーテーションがうまく認識されないので、コマンドに直接打ち込むほうが良い。私の場合は、rootユーザーの認証方式を変更した。

mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
Query OK, 0 rows affected (0.00 sec)

mysql> SELECT user, host, plugin FROM mysql.user;
+------------------+-----------+-----------------------+
| user             | host      | plugin                |
+------------------+-----------+-----------------------+
| mysql.infoschema | localhost | caching_sha2_password |
| mysql.session    | localhost | caching_sha2_password |
| mysql.sys        | localhost | caching_sha2_password |
| root             | localhost | mysql_native_password |
+------------------+-----------+-----------------------+
4 rows in set (0.00 sec)

PyMySQLにしたらできた。

import pymysql.cursors
mydb = pymysql.connect(
  host="xxxxxxxxx",
  user="xxxxxx",
  password="xxxxxx",
  database="xxxxxx"
)

Python Anywhere

データベースの名前が、
"appname$databasename"
となっているので、デプロイする時に、app.py(実行ファイル)のdatabaseの名前を、変更する

app.py
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://username:password@localhost/appname$databasename' 

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1