如何自动填充SQLAlchemy数据库字段?(Flask-SQLAlchemy)

我有一个简单的用户模型,定义如下:

# models.py

from datetime import datetime

from myapp import db

class User(db.Model):

id = db.Column(db.Integer(), primary_key=True)

email = db.Column(db.String(100), unique=True)

password = db.Column(db.String(100))

date_updated = db.Column(db.DateTime())

def __init__(self, email, password, date_updated=None):

self.email = email

self.password = password

self.date_updated = datetime.utcnow()

当我创建一个新的User对象时,我的date_updated字段将设置为当前时间。我想要做的是使它每当我将更改保存到User对象时,我的date_updated字段就会自动设置为当前时间。

我已经仔细阅读过文档,但是对于我一生来说,我似乎找不到任何对此的引用。我是SQLAlchemy的新手,所以我确实没有任何经验可以借鉴。

回答:

只需在列字段中添加server_defaultdefault参数:

created_on = db.Column(db.DateTime, server_default=db.func.now())

updated_on = db.Column(db.DateTime, server_default=db.func.now(), server_onupdate=db.func.now())

我更喜欢{created,updated}_on列名称。;)

有关列插入/更新默认值的 SQLAlchemy文档。

[编辑]:更新了代码以server_default在代码中使用参数。

[Edit 2]:替换onupdateserver_onupdate参数。

以上是 如何自动填充SQLAlchemy数据库字段?(Flask-SQLAlchemy) 的全部内容, 来源链接: utcz.com/qa/429462.html

回到顶部