SQLAlchemyについて以前に書いた記事は以下となります。
SQLAlchemyのcreate_all()を実行したのにテーブルを自動作成されなかったため原因を調べました。
モデルが定義されているクラスをcreate_all()より前に呼び出す必要がありました。
app.py
# 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
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)