使用sqlalchemy定义数据库的datetime

时间:2011-07-15 11:11:17

标签: python sqlalchemy

我应该在定义表时使用date()和datetime.now吗?什么代码错误1或2?

1:

Base = declarative_base()
class T(Base):
    __tablename__ = 't'

    created = Column(DateTime, default=datetime.now)

2:

Base = declarative_base()
class T(Base):
    __tablename__ = 't'

    created = Column(DateTime, default=datetime.now())

1 个答案:

答案 0 :(得分:20)

你想要第一个案例。你正在做的是告诉SqlAlchemy,而不是每当插入一行时,运行此函数(可调用)以获取默认值。这可以是任何可调用函数或字符串值。

这样就可以在插入时准确调用该函数,并获得插入的正确日期。

如果您使用第二个值,您会发现所有默认值共享相同的日期时间。这将是第一次处理代码时发生的值。

http://www.sqlalchemy.org/docs/core/schema.html?highlight=default#sqlalchemy.schema.ColumnDefault

This could correspond to a constant, a callable function, or a SQL clause.