はじめに
これは書きかけです。詳しいファイル構成などをあとで書き込みます。
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'