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

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

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