0
說我有很多一對多的關係,建議在http://flask-sqlalchemy.pocoo.org/2.1/models/:瓶SQLAlchemy的 - 插入多到許多隻與實體的ID
page = Page.query.filter_by(id=value).one()
:
tags = db.Table('tags',
db.Column('tag_id', db.Integer, db.ForeignKey('tag.id')),
db.Column('page_id', db.Integer, db.ForeignKey('page.id'))
)
class Page(db.Model):
id = db.Column(db.Integer, primary_key=True)
tags = db.relationship('Tag', secondary=tags,
backref=db.backref('pages', lazy='dynamic'))
class Tag(db.Model):
id = db.Column(db.Integer, primary_key=True)
我有一個頁面完全確定
我也有列表的標籤ids。當前工作的代碼是:
for id in tag_ids:
tag = Tag.query.filter_by(id=id).one() #wanna avoid this
page.tags.append(tag)
對於更復雜的表格,這可能是低效的,因爲它將使不必要的查詢來識別標籤的實體,只是爲了滿足SQLAlchemy的架構。所以:我如何才能通過提供頁面ID和標籤ID插入標籤表?
我嘗試過,沒有成功,這樣的:
tags.insert().values(tag_id=value1, page_id=value2)
db.session.commit()
這將是db.session.connection()而不是db.session.connection。此外,此解決方案僅適用於頁面實體已存在於數據庫中的情況。我找不到在單個事務中創建頁面及其標籤的方法。 – LRMAAX
謝謝你的正確。標籤是一個關聯表。其中的字段都是外鍵。 – stamaimer