TypeError: declarative() got an unexpected keyword argument 'property'
时间: 2023-10-02 19:11:28 浏览: 579
这个错误通常出现在使用 SQLAlchemy 的 declarative base 声明模型时,可能是因为在模型中使用了 Python 内置的 property 装饰器而不是 SQLAlchemy 提供的装饰器。
解决方法是在模型中使用 SQLAlchemy 提供的装饰器。例如,使用 @sqlalchemy.orm.deferred 属性装饰器代替 Python 内置的 @property 装饰器。
示例代码:
```python
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column, Integer, String
from sqlalchemy.orm import deferred
Base = declarative_base()
class User(Base):
__tablename__ = 'users'
id = Column(Integer, primary_key=True)
name = Column(String)
_password = Column('password', String)
@deferred
def password(self):
return self._password
```
这里使用了 SQLAlchemy 的 @sqlalchemy.orm.deferred 装饰器来延迟加载密码属性,避免了直接使用 Python 内置的 @property 装饰器导致的错误。
阅读全文