SQLAlchemy

SQLAlchemyで"case"

SQLAlchemyでcase文がつかえる。 case文とかこれのこと。 CASE WHEN 条件 THEN 値1 ELSE 値2 END 第一引数は必須で、条件と、それが真だった場合に返す値のタプルのリスト。 キーワード引数 else_ は偽だった場合に返す値。 条件にはand、or演算が使えること…

SQLAlchemy のサブクエリ

サブクエリのフィールドが見つからないといわれてちょっとハマった。 複数のカゴの中にりんごが複数入っているとする。 すべてのカゴに入っているりんごの総数を集計するサブクエリは以下のように書ける。 りんごのID (apple_id) と総数 (total) をフィール…

SQLAlchemyでリレーション

以下のサンプルでは、 各クラスについてidやテーブル名を定義するのが面倒なのでベースクラスを用意する。 from sqlalchemy.ext.declarative import declarative_base, declared_attr Base = declarative_base() class BaseModel(Base): # 継承してね __abst…

SQLAlchemyでサブクエリ

問題 SQLAlchemyから集約関数sumを使ったとき、 同じ列を重複してカウントしてしまった。 以下のようなSQLを実現したい。 sqlite> select l.lemma, lf.total, t.token, tf.total from lemma l join ( select lemma_id, sum(count) as total from lemma_in_fi…