如果每个模型都在单独的文件中,谁能告诉我如何使用 SQLAlchemy 关系?例子:
# ./models/user.py
class UserModel(Base):
__tablename__ = 'users'
id: Mapped[int] = mapped_column(primary_key=True)
characters: Mapped[list['CharacterModel']] = relationship(back_populates='user')
# ./models/character.py
class CharacterModel(Base):
__tablename__ = 'characters'
id: Mapped[int] = mapped_column(primary_key=True)
user_id: Mapped[int] = mapped_column(ForeignKey('users.id', ondelete='CASCADE'))
characters: Mapped['UserModel'] = relationship(back_populates='characters')
# ./models/__init__.py
from . import user, character
创建用户时出错:
sqlalchemy.exc.InvalidRequestError: When initializing mapper Mapper[UserModel(users)], expression 'CharacterModel' failed to locate a name ('CharacterModel'). If this is a class name, consider adding this relationship() to the <class 'python.database.models.user.UserModel'> class after both dependent classes have been defined.
我在任何地方都找不到信息,并且在使用模型的示例中它总是在一个文件中。如果有任何信息,我将不胜感激。
我找到了一个解决方案,可能是唯一正确的解决方案。一切都与上面的代码相同,但在最后添加了带注释的导入
# noqa: E402