前提・実現したいこと
- Flaskでアプリを作成しようとしています。
- Employeeというクラスを作成したので、このmigrateを行いたいです。
- set FLASK_APP=setup.py
を実行した後、
flask init db
を行ったら、migrationsディレクトリが生成されました。ここまではうまくいっていると思います。
- 下記のとおり、migrateを実行したのに、モデルの追加を認識してもらえませんでした。
- 手がかりがつかめないので、何かお気づきの方がみえましたら、ご教示いただければありがたいです。
発生している問題
flask db migrate -m "first migration"
を実行したところ、何もエラーは生じませんが、「No changes in schema detacted.」とのことで、認識してもらえませんでした。
該当のソースコード
python
1# project/setup.py 2from hinaya import create_app 3 4app = create_app() 5 6if __name__ == '__main__': 7 app.run(debug=True)
python
1# project/app/__init__.py 2import os 3from flask import Flask 4from flask_sqlalchemy import SQLAlchemy 5from flask_migrate import Migrate 6 7basedir = os.path.abspath(os.path.dirname(__name__)) 8db = SQLAlchemy() 9migrate = Migrate() 10 11 12def create_app(): 13 app = Flask(__name__) 14 app.config['SECRET_KEY'] = 'secretkey' 15 app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://{user}:{password}@{host}/{db_name}?charset=utf8'.format(**{ 16 'user': 'myname', 17 'password': 'password', 18 'host': 'localhost', 19 'db_name': 'dbname' 20 }) 21 app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False 22 db.init_app(app) 23 migrate.init_app(app, db) 24 return app 25
python
1# project/app/models.py 2from app import db 3from datetime import datetime, timedelta 4 5 6class Employee(db.Model): 7 __tablename__ = 'employee' 8 9 id = db.Column(db.Integer, primary_key=True) 10 name = db.Column(db.String(64), index=True) 11 email = db.Column(db.String(64), unique=True, index=True) 12 is_active = db.Column(db.Boolean, unique=False, default=False) 13 create_at = db.Column(db.DateTime, default=datetime.now) 14 update_at = db.Column(db.DateTime, default=datetime.now) 15 16 def __init__(self, name, email): 17 self.name = name 18 self.email = email 19 20 def create_new_employee(self): 21 db.session.add(self) 22
試したこと
- データベースをMySQLではなく、SQlite3にしてもダメでした。
補足情報(FW/ツールのバージョンなど)
- データベース:MySQL
- Flask 2.0.1
- FlaskSQLAlchemy 2.5.1
- FlaskMigrate 3.0.1
- PyMySQL 1.0.2
- SQLAlchemy 1.4.20
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。