📜  什么是 sqlalchemy 中的 server_default = func.now() - SQL (1)

📅  最后修改于: 2023-12-03 15:36:08.735000             🧑  作者: Mango

什么是 SQLAlchemy 中的 server_default = func.now() - SQL

在 SQLAlchemy 中,server_default 是可用于指定数据库列的默认值的参数之一。它是一个 SQL 表达式,在表格创建时由数据库服务器计算并设置为列的默认值。

常见的 server_default 表达式包括 func.now()func.current_timestamp(),这些表达式可以生成当前日期和时间的值并将其分配为默认值。在这些表达式中,func 是 SQLAlchemy 的函数模块,now()current_timestamp() 分别指示当前日期和时间与当前日期和时间戳。

当然,我们可以自定义表达式来使用 server_default。例如,我们可以使用以下代码片段创建一个 created_at 列,并使其默认值为当前日期和时间戳:

from sqlalchemy import Column, DateTime, func
from sqlalchemy.ext.declarative import declarative_base

Base = declarative_base()

class MyTable(Base):
    __tablename__ = 'my_table'

    id = Column(Integer, primary_key=True)
    created_at = Column(DateTime, server_default=func.now())

上述代码创建了一个名为 MyTable 的表格,其中包含一个名为 created_at 的列。server_default 参数将当前的日期和时间戳作为默认值分配给 created_at 列。

值得注意的是,server_default 并不影响在 Python 中创建新对象时的默认值,它影响的是在数据库中创建新行时,如果未指定值,则使用的默认值。

总之,server_default 是 SQLAlchemy 中用于指定数据库列的默认值的参数之一。我们可以使用内置的函数表达式如 func.now()func.current_timestamp(),也可以自定义表达式。需要记住的是,server_default 并不影响在 Python 中创建新对象时的默认值,而是影响在数据库中创建新行时使用的默认值。