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が使えることが分かったので、もう少し触ってみましょうかね