在SQLAlchemy中,Column
的默認(rèn)值可以通過(guò)在Column
的構(gòu)造函數(shù)中使用default
參數(shù)來(lái)設(shè)置。default
參數(shù)可以是一個(gè)值、一個(gè)函數(shù)或一個(gè)SQL表達(dá)式。
以下是一些常見(jià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'
。
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í)間。
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)型相匹配。