###初心者向け Pythonanywhereを使ってみようで書き忘れてたこと
先に投稿したPythonanywhereの使い方で、「Database」の設定方法について書くのを忘れてたので、追加します。
先にこちらをどうぞ。今回はこいつに対する追加です。
初心者向け Pythonanywhereを使ってみよう
###データベースはMySQL
PythonanywhereではMySQLが無料で提供されます。PostgrSQLは別途有料です。HerokuではPostgreSQLイチ推しっぽかったけど、こちらはMySQL推しみたいです。
では設定画面を見てみましょう。
「Database」へ飛ぶとこんな画面が表示されます。すでにいくつかのデータベースが設定されていますが、作成は超カンタンです
項目の三つ目にあるCreate a databaseで名前を入力してCreateボタンを押すだけです。
データベース名は入力した名前の頭に'ユーザ名'+$がつけられます。たとえばユーザ名がtestでtestdbという名前を指定したとするとデータベース名は
test$testdb
になります。Setting.pyの指定はこの名前になります。(間違って自分が指定した名前だけをSetting.pyに指定するとつながりません。Setting.pyには画面表示されているデータベース名をそのままコピペしましょう)
次に一番下のMySQL passwordに好みのパスワード入力します。こちらもSetting.pyのデータベース定義で使いますので忘れないようにしましょう。ちなみに複数のデータベースを設定しても、パスワードはこちらで設定したものが共通で使われます。別々のものにしたいとか言う場合には、MySQLに直接接続(Your databasesにあるデータベース名をクリックすると当該のMySQLに接続できます)して個別に変更できるかもしれませんが、やったことありません。やりたいひとは試してみて、うまく言ったらその情報を広く展開して下さい。
以上 MySQLの設定はおしまいです。次はデータベース接続のためにSetting.pyにその情報を転記しなければならないので、項目の一番上にあるConnectingのデータベースのホストアドレスや名前をメモしときましょう。(実際にはブラウザの別タブで表示しといてコピペするんでしょうけど、メモすることは大切)
###Setting.pyのデータベース定義
(DEBUGモードでデータベースを切り替える仕掛けをしてますが、気にしないで下さい)
データベースに接続するためにSetting.pyで定義します。やり方で特に注意点はありませんが、migrateするとき(だったと思う)にワーニングっぽいメッセージがでるので、オプションに以下の内容を追加するとそいつは収まります。なお接続ポートの指定は不要のようです。なくても繋がります。
'OPTIONS': {
'init_command': "SET sql_mode='STRICT_TRANS_TABLES'",
},
ちなみにMySQLに接続するためにmysqlclientを事前にインストールしておく必要がありますが、そのまえにCコンパイラをインストールしとかないとエラーになるのはご承知の通り。
Linuxについてほとんど知識を持ってないわたしがCコンパイラのインストール方法について色々とググってみた結果、見つけたのが以下のコマンドです。こいつを「Console」から実行したあとにmysqlclientをインストールすればうまくいくはず。
apt-get -y install gcc libmariadb-dev
(うまくいかなかったら、泣きながらLinux関連の情報をググって探してみて下さい)
あとは気合だ、みんな頑張れ。
現場からは以上です。