SQLAlchemyについて以前に書いた記事は以下となります。
SQLAlchemyのcreate_all()を実行したのにテーブルを自動作成されなかったため原因を調べました。
モデルが定義されているクラスをcreate_all()より前に呼び出す必要がありました。
app.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | # coding: utf-8 from flask import Flask from database import init_db from database import db app = Flask(__name__) # モデルをインポートする前にcreate_init(app)を呼び出すと、テーブルは作成されない # from lib.create_init import create_init # create_init(app) # import models before calling create_all() # モデルをcreate_all()を呼ぶ前にインポートする from model.user import User from model.ses import Project from lib.create_init import create_init create_init(app) |
lib/create_init.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | from model.user import User from database import db def create_init(app): with app.app_context(): db.drop_all() db.create_all() user_create() db.session.commit() def user_create(): # テストデータ from test.data.user import users for i in users: u = User( id = i[ "id" ], name = i[ "name" ], email = i[ "email" ]) db.session.add(u) |