読者です 読者をやめる 読者になる 読者になる

Python

SQLAlchemyで"case"

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

SQLAlchemy のサブクエリ

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

Djangoでリクエストがajaxかどうか判定する

これだけ def index(request): request.is_ajax() return HttpResponse()

Pythonでプラットフォームごとに処理を切り替える

プラットフォームで処理を切り替えたいことがたまにある。 sysモジュールを使うと割と簡単にできる。 import sys # "darwin", "linux", "win32" or "cygwin" sys.platform # Pythonのパスを取得したい場合は sys.executable

PythonでスタンドアロンなGUIアプリを作る

Mac Yosemite 上に構築する。 下準備 Homebrewのインストール クロスプラットフォームなGUIアプリを作るためにQtというライブラリを利用する。 Qtをインストールするのにbrewコマンドが必要となる。 Homebrew このページの先頭にあるスクリプトをコピーして…

Read-onlyなclasspropertyデコレータの実装

class classproperty(property): def __init__(self, fget): super(classproperty, self).__init__(fget) self.__doc__ = fget.__doc__ def __get__(desc, self, cls): return desc.fget(cls) class A(object): @classproperty def __tablename__(cls): retu…

SQLAlchemyでリレーション

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

PySideでスクリーンサイズを取得する

QApplicationオブジェクトのdesktopメソッドで、 QDesktopWidgetオブジェクトが取得できる。 このオブジェクトからデスクトップの情報を取得することができる。 以下のサンプルコードでは、 例としてデスクトップの左半分にウィンドウを表示している。 impor…

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…