sI am trying to use Flask-Migrate in my Flask project but I faced an error.
I installed Flask-Migrate and add needed code, but when I run “flask db init”, It cannot find my database models that I defined.
This is my project structure:
sample_project/
├── __init__.py
├── api.py
└── sample_models/
├── __init__.py
├── db.py
└── sample_model.py
In my api.py:
from flask import Flask
from sample_models.db import db
from flask_migrate import Migrate
def create_app(test_config=None):
migrate = Migrate()
app = Flask(__name__, instance_relative_config=True)
if test_config is None:
# load the instance config, if it exists, when not testing
app.config.from_object(os.environ['APP_SETTINGS'])
else:
# load the test config if passed in
app.config.from_mapping(test_config)
# ensure the instance folder exists
try:
os.makedirs(app.instance_path)
except OSError:
pass
db.init_app(app)
migrate.init_app(app, db)
with app.app_context():
db.create_all()
@app.route('/test', methods=['POST'])
def test():
return "Flask app is running"
return app
if __name__ == '__main__':
app = create_app()
app.run(debug=True, host='0.0.0.0')
In my db.py:
from flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy()
In my sample_model.py:
from .db import db
class SampleModel(db.Model):
__tablename__ = 'sample_table'
id: Mapped[int] = mapped_column(primary_key=True)
name: Mapped[str]
age: Mapped[int]
When I run
flask db init
I got the error below:
Error: While importing 'app.api', an ImportError was raised:
Traceback (most recent call last):
File "/usr/local/lib/python3.12/site-packages/flask/cli.py", line 245, in locate_app
__import__(module_name)
File "/app/api.py", line 5, in <module>
from sample_models.db import db
ModuleNotFoundError: No module named 'sample_models'
Any idea?
DDManh is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
2
from sample_models.db import db
This will solve your error about No module named ‘sample_model found’
Priyanshu Verma is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
3