从 SQLAlchemy 查询中检索不同的 backref 实例

Posted

技术标签:

【中文标题】从 SQLAlchemy 查询中检索不同的 backref 实例【英文标题】:Retrieve distinct backref instances from SQLAlchemy query 【发布时间】:2013-05-21 23:40:15 【问题描述】:

鉴于以下模型:

class Foo(db.model):
    id = db.Column(db.Integer, primary_key=True)
    bar_id = db.Column(
        "bar_id",
        db.Integer(),
        db.ForeignKey("bar.id"))
    baz_id = db.Column(
        "baz_id",
        db.Integer(),
        db.ForeignKey("baz.id"))
    bars = db.Relationship(
        "Bar",
        backref=backref("bar_foo", lazy="dynamic"))
    bazs = db.relationship(
        "Baz",
        backref=backref("baz_foo", lazy="dynamic"))

class Bar(db.model):
    id = db.Column(db.Integer, primary_key=True)
    # some more columns

class Baz(db.model):
    id = db.Column(db.Integer, primary_key=True)
    # some more columns

q = Bar.query.get(123).bar_foo
# .all() gives me several Foo instances

我想为 q 结果检索不同的 Baz 实例

【问题讨论】:

【参考方案1】:

取一组查询返回的结果。默认情况下,返回的objects 是hashable,因此set 函数可以区分两个Foo objects,并确保您在q 中得到的内容实际上是不同的。

【讨论】:

以上是关于从 SQLAlchemy 查询中检索不同的 backref 实例的主要内容,如果未能解决你的问题,请参考以下文章