flaskでmysqlを使ってローカルDBを作る
全体の流れ
全体の流れとしては、
- まずコマンドプロンプトに管理者としてアクセス
- mysqlサーバーを立ち上げ、
- ログインしてデータベースを作成。
- vscodeに戻り、
- テーブル名と追加したいカラムを定義
- レコードをおまじないのように書き追加して作成。
まずローカルDBを立ち上げます。
まずコマンドプロンプトと検索して
管理者として実行を押します。
mysql --version
でmysqlのバージョンを調べ
net start mysql80
でmysqlを起動します。
既に起動されている場合はこの工程は無視してください。
なお下記のコマンドでmysqlを停止できます。
net stop mysql80
mysqlにログイン
なお次に下記のコマンドを入力してログインします。
mysql --user=root --password
このように表示されたら成功です。
show databases;
でデータベースを表示することが可能です
データベースの作成。
CREATE DATABASE データベース名;
でデータベースを作成する事ができます。
データベース削除
drop database 削除したいデータベース名;
でデータベースを削除する事ができます。
作成したデータベースをFlaskに繋げる。
まずは
pip install Flask-SQLAlchemy
と
pip install pymysql
をインストールします
そして下記をインポートして
from flask_sqlalchemy import SQLAlchemy
先ほどはサーバー内にデータベースを作りましたが、
今度はでデータベース内にテーブルを作っていきます。
class Memo(db.Model):
"""
Memoモデルの定義
"""
__tablename__ = "memos"
id = db.Column("id", INTEGER(11), primary_key=True)
memo = db.Column("memo", VARCHAR(255), nullable=True)
# テーブルの生成
db.create_all()
クラスと
__tablename__ = "memos"
で、テーブル名を定義して、
その下にカラムを追加していきます。
それで終わり。
後は基本的にhtmlのフォームの内容をpythonで取得して、
レコードに挿入したり
取り出したりする。
下記はサンプルコード。
# おまじない
app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = False
# dbの初期化
db = SQLAlchemy(app)
class User(db.Model):
"""
Userモデルの定義
"""
__tablename__ = "users"
id = db.Column("id", INTEGER(11), primary_key=True)
memo = db.Column("memo", VARCHAR(255), nullable=True)
@app.route("/insert", methods=["POST"])
def insert():
# postの受け取り
id_txt = request.form["id"]
# idの生成
id = User(id=id_txt)
# postの受け取り
memo_txt = request.form["memo"]
# Memoの生成
memo=User(memo=memo_txt)
# Userオブジェクトを作成し、IDとMemoを設定
new_user = User(id=id_txt, memo=memo_txt)
# UserをDBに反映
db.session.add(new_user)
db.session.commit()
@app.route("/select", methods=["GET"])
def select():
Users = User.query.all()
return render_template('f.html',memos=Users)
@app.route('/')
def index():
return render_template('index.html',)
ログイン機能。