pythonanywhereでMySQL
ダッシュボード画面の右上に「Databases」があるのでそれをクリックすると、データベースを作成できます
MySQLを作成する
まずMySQLを選択します
MySQLのパスワード設定
MySQLのInitial Passwordを設定します。普段使うものとは別です。で「Initial MySQL」をクリックします
$defaultデータベースができます
最初のデータベース、$defaultができます。「Your Databases」から{自分のユーザー名}$defaultのリンクをクリックするとMySQLにログインした形のコマンドプロンプトが現れますので、ここでMySQLのコマンドを入力できます。
MySQLコマンドでテーブル作成等をやってみる
create tabelやinsert intoなどのSQLやshow tablesなどのコマンドが実行できます
別のDatabaseを作ってみる
「Create Databases」に「mydb」と名前を入れて、「Create」ボタンを押すと、同じように{自分のユーザー名}${データベース名}で作成されます
FlaskからMySQLに接続
Flaskのひな形を作ってから、flask_app.pyを書き換えてMySQLのサンプルを作ってみましょう。
flask_app.py
# A very simple Flask Hello World app for you to get started with... from flask import Flask import MySQLdb import json app = Flask(__name__) @app.route('/') def hello_world(): """ 接続サンプル """ # 接続する con = MySQLdb.connect( user='eternalkagosima', passwd=XXXXX, host='eternalkagosima.mysql.pythonanywhere-services.com', db='eternalkagosima$mydb', charset="utf8") # カーソルを取得する cur= con.cursor(MySQLdb.cursors.DictCursor) # クエリを実行する sql = "select id, date_format(edate,'%Y/%m/%d') as fedate, btemp from bodytemp" cur.execute(sql) # 実行結果をすべて取得する rows = cur.fetchall() # 一行ずつ表示する result = [] for row in rows: col = [] col.append(row['id']) col.append(row['fedate']) col.append(row['btemp']) result.append(col) cur.close() con.close() return json.dumps(result)
pythonanywhereは、pip listで見ると、かなりすでにライブラリーが入っているので特にいれなくても動きます
今回は「MySQLdb」つまり「mysqlclient」を使います。「passwd」は「initial」で使ったものではなく
「Databses」の「MySQL setting」の中の「MySQL password」に入れたものを使います
dbに書くのは{自分のユーザー名}$を付けて書かないとだめです。hostはlocalhostではありません。
実行結果は、こんな感じです。これでMySQLが使えることが分かったので、もう少し触ってみましょうかね