2011-11-26 22 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) ?? 

Tôi cũng muốn cột created_at tự động đặt ngày khi được tạo. Và cũng có thể, cột updated_at để đặt ngày bất kỳ lúc nào hàng này được thay đổi.Trong SQLAlchemy, làm cách nào để tạo cột 'Ngày của MySQL'?

Trả lời

16

Bạn có thể cung cấp defaultonupdate tham số để Column:

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

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

Xem Column tài liệu để biết thêm về thế này.

+19

Có cách dễ dàng hơn nữa: 'updated_at = Cột (Ngày, onupdate = datetime.datetime.now)' – plaes

+0

Bất kỳ mẹo nào về cách làm cho 'datetime.datetime.now()' nhận biết múi giờ trong ngữ cảnh SQL Alchemy? –

+0

@MikkoOhtamaa: ['sqlalchemy.types.Datetime'] (http://docs.sqlalchemy.org/en/rel_0_9/core/types.html?highlight=timezone#sqlalchemy.types.DateTime) lấy tham số' múi giờ' với giá trị mặc định là 'False'. – van

Các vấn đề liên quan