177

モデルを使用してクエリで必要な列を指定するにはどうすればよいですか (デフォルトですべての列が選択されます)。sqlalchmey session: でこれを行う方法は知っていますsession.query(self.col1)が、モデルで行うにはどうすればよいですか? 私はできませんSomeModel.query()。方法はありますか?

4

9 に答える 9

289

メソッドを使用with_entities()して、結果で返す列を制限できます。(ドキュメント)

result = SomeModel.query.with_entities(SomeModel.col1, SomeModel.col2)

要件によっては、deferredが役立つ場合もあります。完全なオブジェクトを返すことができますが、ワイヤを介して来る列を制限します。

于 2012-08-21T12:29:42.310 に答える
91
session.query().with_entities(SomeModel.col1)

と同じです

session.query(SomeModel.col1)

エイリアスには、.label()を使用できます

session.query(SomeModel.col1.label('some alias name'))
于 2012-07-18T07:07:28.913 に答える
11

が割り当てられているModel.queryため、を使用できます。この場合、は と同等です。ModelSesssion.query_propertyModel.querySession.query(Model)

クエリによって返された列を変更する方法がわかりません(を使用してさらに追加することを除くadd_columns())。
したがって、あなたの最善の策は、Session.query(Model.col1, Model.col2, ...)(Salilによってすでに示されているように)を使用することです。

于 2012-07-19T08:54:29.113 に答える
2

result = ModalName.query.add_columns(ModelName.colname, ModelName.colname)

于 2021-06-21T08:03:56.257 に答える
-15

ここに例を示します:

movies = Movie.query.filter(Movie.rating != 0).order_by(desc(Movie.rating)).all()

レーティング <> 0 の映画のデータベースを照会し、レーティングが最も高いものから順番に並べます。

こちらをご覧ください: Flask-SQLAlchemy での選択、挿入、削除

于 2012-07-18T09:43:09.450 に答える