Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

ImportError when importing from a lower module

I'm trying to import an object named db (SQLAlchemy object) in in a module of my Flask Project in order to use the SQLAlchemy in my models (models.py). Assuming my package is named Foo and contains the db object in his __init__.py file , when i try to do a from Foo import db, i get the following error:

ImportError: cannot import name db

I'm using Flask Blueprint to dispatch my project into two applications (dashboard and frontend) and each of them contains an __init__.pyfile. Only the models.py is throwing this error, i got some imports in my views file (as importing the login manager) and everything goes well.

Any idea of what it could be ?

UPDATE : The traceback

Traceback (most recent call last):
    File "run.py", line 4, in <module>
        from kuchiyose import app
    File "/path_to_project/kuchiyose/kuchiyose/__init__.py", line 60, in <module>
        from kuchiyose import dashboard, frontend
    File "/path_to_project/kuchiyose/kuchiyose/dashboard/__init__.py", line 10, in <module>
        from dashboard import views
    File "/path_to_project/kuchiyose/kuchiyose/dashboard/__init__.py", line 10, in <module>
        from dashboard import views
    File "/path_to_project/kuchiyose/kuchiyose/dashboard/views.py", line 8, in <module>
        from kuchiyose.dashboard.models import User
    File "/path_to_project/kuchiyose/kuchiyose/dashboard/models.py", line 3, in <module>
        from kuchiyose import db

ImportError: cannot import name db
like image 293
phndiaye Avatar asked Jan 17 '26 07:01

phndiaye


1 Answers

First, thanks for the help. Concerning my second question : "How to import Flask models into views without having a circular import issue (when using SQLAlchemy)", i found a solution. It consists to setup the SQLAlchemy object not into the application __init__.pyfile but into the models.pyfile itself. With that, you can import it in your views.pyfile without problem.

My models.py file, now:

from kuchiyose import app
from flask.ext.sqlalchemy import SQLAlchemy

db = SQLAlchemy(app)

And my views.py

from kuchiyose.dashboard import models
like image 118
phndiaye Avatar answered Jan 21 '26 09:01

phndiaye



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!