我目前正在使用存储在以下文件夹中的自定义UUID SQLAlchemy类型:/flask_application/helpers/uuid_creator.py
,我在我的主模型中导入:
from flask_application.helpers import GUID
class User(db.Model):
__tablename__ = 'user'
id = db.Column(GUID(), primary_key=True)
我后来在其他两个表的外键列上使用了它:
护照表:
from flask_application.helpers import GUID
class Passport(db.Model):
__tablename__ = 'passport'
...
user_id = db.Column(GUID(), db.ForeignKey('user.id'))
...
杂项表:
from flask_application.helpers import GUID
class Misc(db.Model):
__tablename__ = 'misc'
...
user_id = db.Column(GUID(), db.ForeignKey('user.id'))
我保存后,运行python manage.py migrate
命令只是为了找到这个:
Traceback (most recent call last):
File "manage.py", line 4, in <module>
from seed import createdata, dropdb, dropdata
File "C:\www\liu-passport-api\seed.py", line 11, in <module>
from flask_application import app, db
File "C:\www\liu-passport-api\flask_application\__init__.py", line 44, in <module>
from flask_application.models import (
File "C:\www\liu-passport-api\flask_application\models\__init__.py", line 6, in <module>
from .misc import *
File "C:\www\liu-passport-api\flask_application\models\misc.py", line 5, in <module>
from flask_application.helpers import GUID
File "C:\www\liu-passport-api\flask_application\helpers\__init__.py", line 3, in <module>
from .auth import (requires_auth, get_user_from_token)
File "C:\www\liu-passport-api\flask_application\helpers\auth.py", line 11, in <module>
from flask_application.models import User
ImportError: cannot import name 'User'
我认为导入不是问题,因为错误不是ImportError: No module named UUID
,而是ImportError: cannot import name 'User'
由于某种原因。
我是否从SQLAlchemy
错误地实施此GUID扩展程序?当我为自定义数据类型添加GUID类时,用户ImportError
开始发生,所以它不应该是错误。
答案 0 :(得分:0)
您具有循环依赖项:seed
导入flask_application(__init__.py
),其中导入flask_application.models
,后者导入flask_application.models.misc
...,其中导入flask_application.helpers.auth
,最终导入flask_application.models
!而您尚未完成加载iter的操作,就被卡住了。
似乎您在__init__.py
文件中导入了很多东西,这被证明是非常差的做法(除非您非常小心)。此外,您还可以像from .misc import *
这样导入星标。