如何从Select对象获取SqlAlchemy模型实例?

时间:2019-03-29 14:18:17

标签: python sqlalchemy

在SqlAlchemy中,给定一个Select对象,用该对象获取Model实例的正确方法是什么?

例如,当我想要表中最新条目的实例时,我会对表的SqlAlchemy模型的子类做一些笨拙的事情:

Base = DeclarativeBase()

class TableModel(Base)
    ...

class MyTableModel(TableModel)

    @classmethod
    def get_most_recent(cls):
        qry_object = sqlalchemy.select([cls.__table__]
            ).order_by(cls.file_dt.desc()
            ).limit(1)

        return cls.instance_from_query(qry_object)

    @classmethod
    def instance_from_query(cls, qry_object):
        session = get_session()
        result = session.execute(qry_object).fetchone()
        result_dct = dict((k, v) for k, v in result.items())
        instance = cls(**result_dct)
        return instance

$ hat是执行此操作的正确方法?这不是最好的方法,但是我没有在SqlAlchemy文档或代码中找到正确的方法。

(而且,要获取返回多个行的查询实例吗?比如说most_recent_threeselect(...).limit(3)吗?)

谢谢。

0 个答案:

没有答案