使用sqlalchemy定义数据库的datetime

jer*_*boa 13 python sqlalchemy

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

1:

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

    created = Column(DateTime, default=datetime.now)
Run Code Online (Sandbox Code Playgroud)

2:

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

    created = Column(DateTime, default=datetime.now())
Run Code Online (Sandbox Code Playgroud)

Ric*_*ick 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.
Run Code Online (Sandbox Code Playgroud)