2011-11-26 10 views
10
class Posts(Base): 
    __tablename__ = 'posts_posts' 
    id = Column(Integer, primary_key = True) 
    user_id = Column(Integer, nullable=False) 
    body = Column(Text, nullable=True) 

    created_at = Column(Date) << is this right? 
    updated_at = Column(Date) ?? 

created_atの列には、作成時の日付が自動的に設定されます。 また、updated_at列は、この行が変更されたときにいつでも日付を設定します。SQLAlchemyでは、どのように 'MySQLの日付'列を作成しますか?

答えて

16

あなたはColumndefaultonupdateパラメータを提供することができます

def _get_date(): 
    return datetime.datetime.now() 

class Posts(Base): 
    #... 
    created_at = Column(Date, default=_get_date) 
    updated_at = Column(Date, onupdate=_get_date) 

はこの1つ上の詳細はColumnマニュアルを参照してください。

+19

さらに簡単な方法があります: 'updated_at = Column(Date、onupdate = datetime.datetime.now)' – plaes

+0

SQL Alchemyのコンテキストで 'datetime.datetime.now()'タイムゾーンを知る方法のヒント? –

+0

@MikkoOhtamaa:['sqlalchemy.types.Datetime'](http://docs.sqlalchemy.org/en/rel_0_9/core/types.html?highlight=timezone#sqlalchemy.types.DateTime)は、パラメータ' timezone'をとります。デフォルト値は 'False'です。 – van