我有两个名为root fs
和users
的表,我想使用名为permissions
的表在它们之间建立关系。这是我的代码的样子:
class User(Base): __tablename__ = 'users' id = Column(Integer, primary_key=True) first_name = Column(Text) last_name = Column(Text, nullable=True) class Permission(Base): __tablename__ = 'permissions' id = Column(Integer, primary_key=True) title = Column(String(64)) allow_anonymous = Column(Boolean) class UserPermission(Base): __table__ = 'userPermissions' id = Column(Integer, primary_key=True) user_id = Column(Integer, ForeignKey('users.id')) permission_id = Column(Integer, ForeignKey('permissions.id')) value = Column(Boolean)
我知道我可能做错了人际关系,但是通过查找文档和搜索,我找不到它是什么。当我尝试使用userPermissions
创建表时,出现以下错误:
db.Base.metadata.create_all(db.engine)
问题出在哪里?
答案 0 :(得分:4)
在您的UserPermission
类中,您使用了错误的dunder属性:
__table__ = 'userPermissions'
应该是:
__tablename__ = 'userPermissions'
Sqlalchemy试图将字符串'userPermissions'
视为Table
对象。
答案 1 :(得分:2)
class UserPermission(Base):
__table__ = 'userPermissions'
应该在这里:
class UserPermission(Base):
__tablename__ = 'userPermissions'