Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

flask-migrate doesn't detect models

I am reading (and watching) about Flask-Migrate here: https://realpython.com/blog/python/flask-by-example-part-2-postgres-sqlalchemy-and-alembic/ and here https://www.youtube.com/watch?v=YJibNSI-iaE#t=21

and doing everything from this tutorial:

  • I started a local postgres server (using Postgres.App, which started the server at postgresql://localhost:5432)
  • updated configs as per said tutorial
  • updated app.py, created a models.py etc.

After you install Flask-Migrate and run

python manage.py db init
python manage.py db migrate

it should detect all tables declared in models.py.

In my case, it detects nothing. And, based on the comments to the tutorial, it's not just my case. So, how do I make this work?

like image 894
kurtgn Avatar asked Oct 25 '14 16:10

kurtgn


2 Answers

Make sure your model is imported by your app. In most cases your views.py should do that. But you can also import it directly from your app.py.

like image 137
Klaus D. Avatar answered Sep 30 '22 03:09

Klaus D.


Be sure that you're importing your models the same way throughout your application.

For example, I was using the following in my __init__.py:

from .models import *

And the following in my manage.py:

from databases import models

Because these have diff namespaces, flask_manager thinks there are duplicated tables. (Note, I found this solution in the following github issue / thread.)

Fix and all will be well.

like image 41
Yaakov Bressler Avatar answered Sep 30 '22 01:09

Yaakov Bressler