SQLAlchemy“ AttributeError:'str'对象没有属性'c'”

时间:2018-11-25 11:59:15

标签: python sqlalchemy

我有两个名为root fsusers的表,我想使用名为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)

问题出在哪里?

2 个答案:

答案 0 :(得分:4)

在您的UserPermission类中,您使用了错误的dunder属性:

__table__ = 'userPermissions'

应该是:

__tablename__ = 'userPermissions'

Sqlalchemy试图将字符串'userPermissions'视为Table对象。

答案 1 :(得分:2)

class UserPermission(Base):
    __table__ = 'userPermissions'

应该在这里:

class UserPermission(Base):
    __tablename__ = 'userPermissions'