Python SQL炼金术关联表无法按计划工作

Python SQL炼金术关联表无法按计划工作,python,sqlalchemy,flask,Python,Sqlalchemy,Flask,我目前正在为我的Flask应用程序编写数据库代码,虽然我的大多数代码都可以正常工作,但有一个关联表我无法使用,我也没有办法修复它 任务描述:我有两个表——“组”和“票证”(类似于任务)——我想用N:M关系连接它们。但是,我希望此关系包含一些附加信息(例如:它需要包含关于组是否已完成票证的信息)。 此外,我希望访问一个组的票证(反之亦然),如下所示: for t in group_one.tickets: print t.name class Ticket(db.Model):

我目前正在为我的Flask应用程序编写数据库代码,虽然我的大多数代码都可以正常工作,但有一个关联表我无法使用,我也没有办法修复它

任务描述:我有两个表——“组”和“票证”(类似于任务)——我想用N:M关系连接它们。但是,我希望此关系包含一些附加信息(例如:它需要包含关于组是否已完成票证的信息)。 此外,我希望访问一个组的票证(反之亦然),如下所示:

for t in group_one.tickets:
    print t.name
class Ticket(db.Model):
    __tablename__ = "Ticket"
    id = db.Column(db.Integer, primary_key=True)
    groups = db.relationship("Group", secondary = "TicketForGroup", backref="Ticket")

class Group(db.Model):
    __tablename__ = "Group"
    id = db.Column(db.Integer, primary_key=True)
    tickets = db.relationship("Ticket", secondary = "TicketForGroup", backref="Group")

class TicketForGroup(db.Model):
     __tablename__ = "TicketForGroup"

    ticket_id = db.Column(db.Integer, db.ForeignKey(Ticket.id), primary_key="True")
    ticket = db.relationship("Ticket", backref="TicketForGroup", primaryjoin = ticket_id == Ticket.id)

    group_id = db.Column(db.Integer, db.ForeignKey(Group.id), primary_key="True")
    group = db.relationship("Group", backref="TicketForGroup", primaryjoin = group_id == Group.id)

    is_closed = db.Column(db.Boolean, default=False)

我已经按照SQLAlchemy文档()尝试过了,但只产生了以下错误消息:
无法确定关系票证上的父/子表之间的联接条件。请指定“primaryjoin”表达式。如果存在“secondary”,则还需要“secondaryjoin”

在我尝试让它运行时,我对代码进行了一些实验。现在看起来是这样的:

for t in group_one.tickets:
    print t.name
class Ticket(db.Model):
    __tablename__ = "Ticket"
    id = db.Column(db.Integer, primary_key=True)
    groups = db.relationship("Group", secondary = "TicketForGroup", backref="Ticket")

class Group(db.Model):
    __tablename__ = "Group"
    id = db.Column(db.Integer, primary_key=True)
    tickets = db.relationship("Ticket", secondary = "TicketForGroup", backref="Group")

class TicketForGroup(db.Model):
     __tablename__ = "TicketForGroup"

    ticket_id = db.Column(db.Integer, db.ForeignKey(Ticket.id), primary_key="True")
    ticket = db.relationship("Ticket", backref="TicketForGroup", primaryjoin = ticket_id == Ticket.id)

    group_id = db.Column(db.Integer, db.ForeignKey(Group.id), primary_key="True")
    group = db.relationship("Group", backref="TicketForGroup", primaryjoin = group_id == Group.id)

    is_closed = db.Column(db.Boolean, default=False)
但当我尝试访问数据时,唯一返回的是“AttributeError:type对象'TicketForGroup'没有属性'foreign_keys'”。 不用说,我现在有点迷路了,所以任何关于我做错了什么以及如何改正的帮助都将不胜感激

您好,
MT

您能编辑问题并添加缺少的
id
列吗?啊,对不起,我正在编辑它这是关联对象模式,但您的代码看起来像是关联对象和关联表的混合体。您应该密切关注SA文档中的关联对象示例,并检查扩展,它将为您简化事情。