web-dev-qa-db-ja.com

SQLAlchemy / Elixirで個別の列値を選択する

SQLAlchemyとElixirを使用して書いている小さなスクリプトでは、特定の列のすべての個別の値を取得する必要があります。通常のSQLでは、単純な問題になります。

SELECT DISTINCT `column` FROM `table`;

「手動で」そのクエリを実行できることはわかっていますが、可能であればSQLAlchemyの宣言構文(および/またはElixir)に固執します。私はそれが可能であるに違いないと確信し、SQLAlchemyのドキュメントでこの種のことをほのめかしているのを見ましたが、私はそのドキュメントを何時間も(そしてElixirのドキュメントも)探し続けてきました。実際にそれがどのように行われるかを把握しているようです。だから私は何が欠けていますか?

41
David Z

マッピングされたクラスの列プロパティをクエリでき、クエリクラスには生成distinct()メソッドがあります。

for value in Session.query(Table.column).distinct():
     pass
81
Ants Aasma

このクラスの場合:

class Assurance(db.Model):
    name = Column(String)

あなたはこれを行うことができます:

assurances = []
for assurance in Assurance.query.distinct(Assurance.name):
    assurances.append(assurance.name)

個別の値のリストがあります

4
for user in session.query(users_table).distinct():
    print user.posting_id
2
barryjones