我应该在定义表时使用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())
答案 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.