0
は、これまでのところ私は、次の基本的に持っている:SQLAlchemyの出力にCASE列を追加するには?
MyTable.query
.join(…)
.filter(…)
filter
は複雑な大文字小文字を区別しないプレフィックスチェックがあります
or_(*[MyTable.name.ilike("{}%".format(prefix)) for prefix in prefixes])
は今、私は結果で一致する接頭辞を取得する必要があります。擬似SQLでは:
SELECT CASE
WHEN strpos(lower(my_table.foo), 'prefix1') = 0 THEN 'prefix1'
WHEN …
END AS prefix
WHERE prefix IS NOT NULL;
SQLAlchemy documentationは、既存のいずれかに基づいて新しい列を取得するためにそれを使用する方法奇妙なエッジケースのように思われ、WHERE
内CASE
を使用する方法を示し、そしてません。
目的は、ロジックとプレフィックスの名前をどこにでも複製することを避けることです。
'session.query(Model)'の 'Model.query'の短縮形を使用しているため、クエリにエンティティ/カラムを追加する方法が混乱していますか? –