Python DB登録

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()  

ソースコード一式はgithubに置きました

SQL弱者としてはSELECTとINSERTができればかなり満足