pythonでMySQL(pythonanywhere編)

pythonanywhere - flaskを利用してMySQL

pythonanywhereでMySQL

ダッシュボード画面の右上に「Databases」があるのでそれをクリックすると、データベースを作成できます

MySQLを作成する

まずMySQLを選択します

MySQL選択

MySQLのパスワード設定

MySQLのInitial Passwordを設定します。普段使うものとは別です。で「Initial MySQL」をクリックします

Initial password

$defaultデータベースができます

最初のデータベース、$defaultができます。「Your Databases」から{自分のユーザー名}$defaultのリンクをクリックするとMySQLにログインした形のコマンドプロンプトが現れますので、ここでMySQLのコマンドを入力できます。

MySQLコマンド

MySQLコマンドでテーブル作成等をやってみる

create tabelやinsert intoなどのSQLやshow tablesなどのコマンドが実行できます

create table

別のDatabaseを作ってみる

「Create Databases」に「mydb」と名前を入れて、「Create」ボタンを押すと、同じように{自分のユーザー名}${データベース名}で作成されます

create database

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」で使ったものではなく

mysql program

「Databses」の「MySQL setting」の中の「MySQL password」に入れたものを使います

mysql program

dbに書くのは{自分のユーザー名}$を付けて書かないとだめです。hostはlocalhostではありません。

mysql program

実行結果は、こんな感じです。これでMySQLが使えることが分かったので、もう少し触ってみましょうかね