📅  最后修改于: 2023-12-03 15:36:08.735000             🧑  作者: Mango
在 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 中创建新对象时的默认值,而是影响在数据库中创建新行时使用的默认值。