sqlalchemy中Column的默認(rèn)值屬性

小云
174
2023-08-22 14:10:41
欄目: 云計(jì)算

在SQLAlchemy中,Column的默認(rèn)值可以通過(guò)在Column的構(gòu)造函數(shù)中使用default參數(shù)來(lái)設(shè)置。default參數(shù)可以是一個(gè)值、一個(gè)函數(shù)或一個(gè)SQL表達(dá)式。

以下是一些常見(jiàn)的用法示例:

  1. 默認(rèn)值為常量值:
from sqlalchemy import Column, Integer, String
class User(Base):
__tablename__ = 'users'
id = Column(Integer, primary_key=True)
name = Column(String, default='John')

在上面的示例中,name列的默認(rèn)值設(shè)置為'John'。

  1. 默認(rèn)值為函數(shù)的返回值:
from sqlalchemy import Column, Integer, func
class User(Base):
__tablename__ = 'users'
id = Column(Integer, primary_key=True)
created_at = Column(DateTime, default=func.now())

在上面的示例中,created_at列的默認(rèn)值設(shè)置為當(dāng)前時(shí)間。

  1. 默認(rèn)值為SQL表達(dá)式:
from sqlalchemy import Column, Integer, text
class User(Base):
__tablename__ = 'users'
id = Column(Integer, primary_key=True)
active = Column(Integer, default=text('1'))

在上面的示例中,active列的默認(rèn)值設(shè)置為SQL表達(dá)式1。

需要注意的是,默認(rèn)值的計(jì)算是在數(shù)據(jù)庫(kù)層面上進(jìn)行的,而不是在Python層面上進(jìn)行的。因此,使用Python函數(shù)作為默認(rèn)值時(shí)需要使用SQLAlchemy提供的函數(shù)(如func.now())來(lái)代替Python的內(nèi)置函數(shù)(如datetime.now())。此外,還需要注意默認(rèn)值函數(shù)或SQL表達(dá)式的返回類(lèi)型必須與列的類(lèi)型相匹配。

0