SQLAlchemyを使ってMySQLにデータ登録
画面の入力フォームの値をDBに登録する(レイアウトは後回し)
データを登録するテーブル定義
# | カラム名 | データ型 | 制約 |
---|---|---|---|
1 | no | int | primary_key, auto_increment |
2 | title | varchar(100) | not null |
3 | content | varchar(1000) | - |
入力フォームを作成
入力フォームはいつもの書き方で <input name="xxx">
で項目名を設定
<form action="/post" method="post"> <div class="input-group mb-3"> <div class="input-group-prepend"> <span class="input-group-text" id="basic-addon1">Title</span> </div> <input type="text" class="form-control" name="title" aria-label="Title" aria-describedby="basic-addon1"> </div> <div class="input-group"> <div class="input-group-prepend"> <span class="input-group-text">content</span> </div> <textarea class="form-control" name="content" aria-label="With textarea"></textarea> </div> <button type="submit" class="btn btn-outline-info">submit</button> </form>
DB登録処理を作成
引数に登録するオブジェクトを取りsession.add()
で登録する
def register_item(self, item=None): """ itemテーブル登録 """ session = db.create_session() session.add(item) session.commit()
Controllerを定義
POSTでリクエストが来たらDB登録処理を呼んで、画面表示処理を実行
request.form['xxx']
(フォームのname属性)で入力値が受け取れる
auto_incrementのカラムは値を設定しなくてOK
@app.route('/post', methods=['GET', 'POST']) def register(): if request.method == 'POST': # DB登録するオブジェクトを生成 target = Item(title=request.form['title'], content=request.form['content']) Item.register_item(app, item=target) # 画面再表示 return show_mindmap()
SQL弱者としてはSELECTとINSERTができればかなり満足