【发布时间】:2018-01-18 11:34:43
【问题描述】:
我正在休息 api 与 python 烧瓶和 SQLalchemy。我有 2 个类 Parent 和 Child:
Class Parent(db.Model):
id = db.Column(db.Integer, nullable=False, autoincrement=True, primary_key=True)
name = db.Column(db.String, nullable=False)
children = relationship('Child',
secondary=parent_has_children,
back_populates='parents'
)
Class Child(db.Model):
id = db.Column(db.Integer, nullable=False, autoincrement=True, primary_key=True)
name = db.Column(db.String, nullable=False)
parents = relationship('Parent',
secondary=parent_has_children,
back_populates='children'
)
parent_has_children = db.Table('parent_has_children', db.metadata,
db.Column('parent_id', db.Integer, ForeignKey('Parent.id')),
db.Column('child_id', db.Integer, ForeignKey('Child.id'))
)
我有一个多对多的关系,因此我使用辅助表。假设我有一个接收 child_id 和 parent_id 并建立它们的关系的路由:
@app.route('/buildrelationship', methods=['POST'])
def buildrelationship():
child_id= request.json['student_id']
parent_id = request.json['parent_id']
child = Child.query.get(child_id)
parent = Parent.query.get(parent_id)
parent.children.append(child)
db.session.commit()
这样我添加了父子之间的关系,但我必须先从数据库中获取父子关系,然后再添加关系。 request.json 可能有一个要附加到父级的子级列表或要附加到特定子级的父级列表。在这种情况下,我必须查询与列表长度一样多的次数才能获取父级或子级,然后追加关系。有没有更好的方法来追加关系而不是每次都加载父子对象?
【问题讨论】:
标签: python sqlalchemy