簡體   English   中英

flask sqlalchemy - 僅使用實體ID插入多對多

[英]flask sqlalchemy - Insert many-to-many only with entities IDs

假設我有http://flask-sqlalchemy.pocoo.org/2.1/models/中建議的多對多關系:

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)

我有一個完全由以下標識的頁面:

page = Page.query.filter_by(id=value).one()

我還有標簽ID 列表 目前的工作代碼是:

for id in tag_ids:
    tag = Tag.query.filter_by(id=id).one() #wanna avoid this
    page.tags.append(tag)

對於更復雜的表,這可能是低效的,因為它將使不必要的查詢識別標記實體,只是為了滿足SQLAlchemy體系結構。 那么: 如何通過提供Page id和Tag id來插入tags表?

我試過,但沒有成功,這個:

tags.insert().values(tag_id=value1, page_id=value2)
db.session.commit()
page_id = Page.query.get(value).id

for tag_id in tag_ids:
    db.session.connection().execute(tags.insert.values(tag_id=tag_id, page_id=page_id))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM