В SqlAlchemy, с учетом объекта Select, как правильно получить экземпляр (или экземпляры) модели с этим объектом?
Например, когда мне нужен экземпляр для самой последней записи в таблице, я делаю что-то неуклюжее, как это, для подкласса модели 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_three
, с select(...).limit(3)
?)
Спасибо.