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

También me gustaría que la columna created_at establezca automáticamente la fecha en que se creó. Y también, la columna updated_at para establecer la fecha cada vez que se cambie esta fila.En SQLAlchemy, ¿cómo creo una columna de 'fecha de MySQL'?

Respuesta

16

Puede proporcionar default y onupdate parámetros a 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) 

Ver Column documentación para obtener más información sobre éste.

+19

Hay una manera aún más fácil: 'updated_at = Columna (Date, onupdate = datetime.datetime.now)' – plaes

+0

¿Alguna sugerencia sobre cómo hacer 'datetime.datetime.now()' consciente de la zona horaria en el contexto SQL Alchemy? –

+0

@MikkoOhtamaa: ['sqlalchemy.types.Datetime'] (http://docs.sqlalchemy.org/en/rel_0_9/core/types.html?highlight=timezone#sqlalchemy.types.DateTime) toma un parámetro' timezone' con el valor predeterminado de 'False'. – van

Cuestiones relacionadas