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

0.4.3がリリースされている

SQLAlchemy

0.4.1から0.4.2にあげるのを躊躇している間に、0.4.3が出ている。

http://www.sqlalchemy.org/CHANGES

Migrateの方も、最新版が0.4.2devに更新されている。


地味な変更だが、generic functionとしてnow()が追加されているのがうれしい。

Added "now()" as a generic function; on SQLite, Oracle and MSSQL compiles as CURRENT_TIMESTAMP"; "now()" on all others. [ticket:943]

これを使うと、例えば、テーブル定義でデフォルトの値としてfunc.now()を使っていても、SQLiteOracleで運用しているならば、実行時にCURRENT_TIMESTAMPに置き換えてくれる。

from sqlalchemy import *

metadata = MetaData()
table = Table('table', metadata,
                  Column('id', Integer, primary_key=True),
                  Column('some_value', String(50)),
                  Column('created_at', DateTime, nullable=False, default=func.now()),
                  )


まあ、Python組み込みモジュールのdatetimeを使ってもいいけど、アプリケーション側の時刻を使うか、データベース側の時刻を使うかで判断が分かれるかな。

import datetime
from sqlalchemy import *

metadata = MetaData()
table = Table('table', metadata,
                  Column('id', Integer, primary_key=True),
                  Column('some_value', String(50)),
                  Column('created_at', DateTime, nullable=False, default=datetime.datetime.now),
                  )