Python 为什么我会得到这个错误属性错误:';SQLAlchemy';对象没有属性';型号';

Python 为什么我会得到这个错误属性错误:';SQLAlchemy';对象没有属性';型号';,python,sqlalchemy,flask-sqlalchemy,Python,Sqlalchemy,Flask Sqlalchemy,嗨,我的朋友,我是新来的。我的models.py有问题,尤其是在关系和foreignkey-我遇到了以下错误: sp_id=db.Column(db.Integer,db.models.ForeignKey('saleperson.id'),null=False) AttributeError:'SQLAlchemy'对象没有属性'models' 带有db.models.Foreignkey的所有行都会引发此错误。希望你能在这里帮助我 这是my models.py的脚本 我所做的是将db.mo

嗨,我的朋友,我是新来的。我的models.py有问题,尤其是在关系和
foreignkey
-我遇到了以下错误:

sp_id=db.Column(db.Integer,db.models.ForeignKey('saleperson.id'),null=False)
AttributeError:'SQLAlchemy'对象没有属性'models'
带有
db.models.Foreignkey
的所有行都会引发此错误。希望你能在这里帮助我

这是my models.py的脚本


我所做的是将db.models.ForeighnKey()更改为db.ForeighnKey()。现在它抛出了一个新错误:

>     D:\FLASK_PROPERTYMANAGEMENT\venv\lib\site-packages\flask_sqlalchemy\__init__.py:873:
> FSADeprecationWarning: SQLALCHEMY_TRACK_MODIFICATIONS adds significant
> overhead and will be disabled by default in the future.  Set it to
> True or False to suppress this warning.
>       'SQLALCHEMY_TRACK_MODIFICATIONS adds significant overhead and '
>     Traceback (most recent call last):
>       File "<stdin>", line 1, in <module>
>       File "D:\FLASK_PROPERTYMANAGEMENT\main\__init__.py", line 16, in <module>
>         from main import routes
>       File "D:\FLASK_PROPERTYMANAGEMENT\main\routes.py", line 7, in <module>
>         from main.form import RegistrationForm, LoginForm, UpdateAccountForm, ProjectForm
>       File "D:\FLASK_PROPERTYMANAGEMENT\main\form.py", line 7, in <module>
>         from main.models import User
>       File "D:\FLASK_PROPERTYMANAGEMENT\main\models.py", line 54, in <module>
>         class SalesPerson(Person):
>       File "D:\FLASK_PROPERTYMANAGEMENT\venv\lib\site-packages\flask_sqlalchemy\model.py", line 67, in __init__
>         super(NameMetaMixin, cls).__init__(name, bases, d)
>       File "D:\FLASK_PROPERTYMANAGEMENT\venv\lib\site-packages\flask_sqlalchemy\model.py", line 121, in __init__
>         super(BindMetaMixin, cls).__init__(name, bases, d)
>       File "D:\FLASK_PROPERTYMANAGEMENT\venv\lib\site-packages\sqlalchemy\orm\decl_api.py",
> line 75, in __init__
>         _as_declarative(reg, cls, dict_)
>       File "D:\FLASK_PROPERTYMANAGEMENT\venv\lib\site-packages\sqlalchemy\orm\decl_base.py",
> line 126, in _as_declarative
>         return _MapperConfig.setup_mapping(registry, cls, dict_, None, {})
>       File "D:\FLASK_PROPERTYMANAGEMENT\venv\lib\site-packages\sqlalchemy\orm\decl_base.py",
> line 177, in setup_mapping
>         return cfg_cls(registry, cls_, dict_, table, mapper_kw)
>       File "D:\FLASK_PROPERTYMANAGEMENT\venv\lib\site-packages\sqlalchemy\orm\decl_base.py",
> line 299, in __init__
>         self._scan_attributes()
>       File "D:\FLASK_PROPERTYMANAGEMENT\venv\lib\site-packages\sqlalchemy\orm\decl_base.py",
> line 455, in _scan_attributes
>         local_attributes_for_class, attribute_is_overridden
>       File "D:\FLASK_PROPERTYMANAGEMENT\venv\lib\site-packages\sqlalchemy\orm\decl_base.py",
> line 621, in _produce_column_copies
>         "Columns with foreign keys to other columns "
>     sqlalchemy.exc.InvalidRequestError: Columns with foreign keys to other columns must be declared as @declared_attr callables on
> declarative mixin classes.  For dataclass field() objects, use a
> lambda:.
>D:\FLASK\u PROPERTYMANAGEMENT\venv\lib\site packages\FLASK\u sqlalchemy\\uuuuuuu init\uuuuuuuuuuuuy.py:873:
>FSADEPRICTIONWARNING:SQLALCHEMY\u TRACK\u修改增加了显著的
>开销,并将在将来默认禁用。设定为
>True或False以抑制此警告。
>“SQLALCHEMY\u TRACK\u修改增加了显著的开销,并且”
>回溯(最近一次呼叫最后一次):
>文件“”,第1行,在
>文件“D:\FLASK\u PROPERTYMANAGEMENT\main\\uuuuu init\uuuuuuu.py”,第16行,在
>从主要进口路线
>文件“D:\FLASK\u PROPERTYMANAGEMENT\main\routes.py”,第7行,在
>从main.form导入注册表单、LoginForm、UpdateAccountForm、ProjectForm
>文件“D:\FLASK\u PROPERTYMANAGEMENT\main\form.py”,第7行,在
>从main.models导入用户
>文件“D:\FLASK\u PROPERTYMANAGEMENT\main\models.py”,第54行,在
>班级销售人员(人):
>文件“D:\FLASK\u PROPERTYMANAGEMENT\venv\lib\site packages\FLASK\u sqlalchemy\model.py”,第67行,在\uuu init中__
>super(NameMetaMixin,cls)。\uuuu init\uuuu(name,base,d)
>文件“D:\FLASK\u PROPERTYMANAGEMENT\venv\lib\site packages\FLASK\u sqlalchemy\model.py”,第121行,在\uuu init中__
>super(BindMetaMixin,cls)。\uuuu init\uuuu(名称,碱基,d)
>文件“D:\FLASK\u PROPERTYMANAGEMENT\venv\lib\site packages\sqlalchemy\orm\decl\u api.py”,
>第75行,in__init__
>作为声明性的(reg、cls、dict)
>文件“D:\FLASK\u PROPERTYMANAGEMENT\venv\lib\site packages\sqlalchemy\orm\decl\u base.py”,
>第126行,in_as_声明式
>返回_MapperConfig.setup_映射(注册表、cls、dict_、无、{})
>文件“D:\FLASK\u PROPERTYMANAGEMENT\venv\lib\site packages\sqlalchemy\orm\decl\u base.py”,
>第177行,在设置映射中
>返回cfg\u cls(注册表、cls\uu、dict\uu、表、映射器\ukw)
>文件“D:\FLASK\u PROPERTYMANAGEMENT\venv\lib\site packages\sqlalchemy\orm\decl\u base.py”,
>第299行,在_init中__
>self.\u扫描\u属性()
>文件“D:\FLASK\u PROPERTYMANAGEMENT\venv\lib\site packages\sqlalchemy\orm\decl\u base.py”,
>第455行,输入扫描属性
>本地\u属性\u对于\u类,属性\u被覆盖
>文件“D:\FLASK\u PROPERTYMANAGEMENT\venv\lib\site packages\sqlalchemy\orm\decl\u base.py”,
>第621行,在“生成”列中
>“具有外键的列指向其他列”
>sqlalchemy.exc.InvalidRequestError:具有外键的列必须在上声明为@declared_attr callables
>声明性mixin类。对于dataclass field()对象,使用
>lambda:。

噢,我很好奇为什么你有时会写:
db.models.ForeignKey()
,有时写:
db.ForeignKey()
?第二种方法是正确的方法,所以请尝试在您看到第一种方法使用的任何地方更改它。我找到并更正了它。现在我有一条新的错误消息:“带外键的列指向其他列”sqlalchemy.exc.InvalidRequestError:在声明性mixin类上,具有外键的列必须声明为@declared_attr callables。对于dataclass field()对象,请使用lambda:。抱歉,我不确定该错误从何而来,部分原因是我没有看到完整的错误消息/回溯。正如您所知,这是本网站上更难处理/支持的事情之一:动态调试。至少为了挽救这一特殊的努力,我建议您编辑您的问题以包含新的错误消息。
>     D:\FLASK_PROPERTYMANAGEMENT\venv\lib\site-packages\flask_sqlalchemy\__init__.py:873:
> FSADeprecationWarning: SQLALCHEMY_TRACK_MODIFICATIONS adds significant
> overhead and will be disabled by default in the future.  Set it to
> True or False to suppress this warning.
>       'SQLALCHEMY_TRACK_MODIFICATIONS adds significant overhead and '
>     Traceback (most recent call last):
>       File "<stdin>", line 1, in <module>
>       File "D:\FLASK_PROPERTYMANAGEMENT\main\__init__.py", line 16, in <module>
>         from main import routes
>       File "D:\FLASK_PROPERTYMANAGEMENT\main\routes.py", line 7, in <module>
>         from main.form import RegistrationForm, LoginForm, UpdateAccountForm, ProjectForm
>       File "D:\FLASK_PROPERTYMANAGEMENT\main\form.py", line 7, in <module>
>         from main.models import User
>       File "D:\FLASK_PROPERTYMANAGEMENT\main\models.py", line 54, in <module>
>         class SalesPerson(Person):
>       File "D:\FLASK_PROPERTYMANAGEMENT\venv\lib\site-packages\flask_sqlalchemy\model.py", line 67, in __init__
>         super(NameMetaMixin, cls).__init__(name, bases, d)
>       File "D:\FLASK_PROPERTYMANAGEMENT\venv\lib\site-packages\flask_sqlalchemy\model.py", line 121, in __init__
>         super(BindMetaMixin, cls).__init__(name, bases, d)
>       File "D:\FLASK_PROPERTYMANAGEMENT\venv\lib\site-packages\sqlalchemy\orm\decl_api.py",
> line 75, in __init__
>         _as_declarative(reg, cls, dict_)
>       File "D:\FLASK_PROPERTYMANAGEMENT\venv\lib\site-packages\sqlalchemy\orm\decl_base.py",
> line 126, in _as_declarative
>         return _MapperConfig.setup_mapping(registry, cls, dict_, None, {})
>       File "D:\FLASK_PROPERTYMANAGEMENT\venv\lib\site-packages\sqlalchemy\orm\decl_base.py",
> line 177, in setup_mapping
>         return cfg_cls(registry, cls_, dict_, table, mapper_kw)
>       File "D:\FLASK_PROPERTYMANAGEMENT\venv\lib\site-packages\sqlalchemy\orm\decl_base.py",
> line 299, in __init__
>         self._scan_attributes()
>       File "D:\FLASK_PROPERTYMANAGEMENT\venv\lib\site-packages\sqlalchemy\orm\decl_base.py",
> line 455, in _scan_attributes
>         local_attributes_for_class, attribute_is_overridden
>       File "D:\FLASK_PROPERTYMANAGEMENT\venv\lib\site-packages\sqlalchemy\orm\decl_base.py",
> line 621, in _produce_column_copies
>         "Columns with foreign keys to other columns "
>     sqlalchemy.exc.InvalidRequestError: Columns with foreign keys to other columns must be declared as @declared_attr callables on
> declarative mixin classes.  For dataclass field() objects, use a
> lambda:.