【SQLAlchemy】create_all()でテーブルが作成されない

【SQLAlchemy】create_all()でテーブルが作成されない Python

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)
タイトルとURLをコピーしました