从 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 实例的主要内容,如果未能解决你的问题,请参考以下文章

SQLAlchemy Asyncio ORM 在从元数据中检索表和列时无法查询数据库

SQLAlchemy 不仅通过主键从身份映射中获取项目

Graphene/Flask/SQLAlchemy - 从路由入口点检索数据的推荐方法是啥?

从 RDS 检索数据给出 AttributeError: 'sqlalchemy.cimmutabledict.immutabledict' 对象没有属性 'setdefault'

如何检索 SQLAlchemy 结果集的 python 列表? [复制]

具有条件聚合的一对多查询以及如何从查询中检索不同的结果