モデルを使用してクエリで必要な列を指定するにはどうすればよいですか(デフォルトですべての列を選択します)?私はsqlalchmeyセッションでこれを行う方法を知っています:session.query(self.col1)
が、モデルでどのように行うのですか? SomeModel.query()
できません。方法はありますか?
session.query.with_entities(SomeModel.col1)
と同じです
session.query(SomeModel.col1)
エイリアスには、.label()を使用できます
session.query(SomeModel.col1.label('some alias name'))
load_only 関数を使用できます:
from sqlalchemy.orm import load_only
fields = ['name', 'addr', 'phone', 'url']
companies = session.query(Company).options(load_only(*fields)).all()
ここで、「会社」はモデルです(あなたの場合はSomeModelです)
Model.query
を使用できます。これは、Model
(または、特に宣言型拡張機能が使用される場合は通常その基本クラス)が Sesssion.query_property
に割り当てられているためです。この場合、Model.query
はSession.query(Model)
と同等です。
クエリによって返された列を変更する方法を知りません( add_columns()
を使用してさらに追加する場合を除く)。
したがって、あなたのベストショットはSession.query(Model.col1, Model.col2, ...)
を使用することです(すでにSalilが示しています)。