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

标签 database postgresql sqlalchemy flask 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 字段被设置为当前时间。我想要做的是让它每当我保存对我的用户对象的更改时,我的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 列名称。 ;)

关于 column insert/update defaults 的 SQLAlchemy 文档.

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

[编辑 2]:onupdate 替换为 server_onupdate 参数。

关于database - 如何自动填充 SQLAlchemy 数据库字段? (Flask-SQLAlchemy),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12154129/

相关文章:

python - Sqlalchemy mysql FLOAT精度和长度

mysql - 远程更新 Drupal 站点上的数据库?

database - 自动更正打开的查询和数据库连接

mysql - 如何使用MySQL从max(datetime)中获取相应的值?

ruby-on-rails - Postgres 重复错误

python - SQLAlchemy:按 JSON 列中的键过滤

postgresql - 在 SQLAlchemy 中更新 PostgreSQL 数组字段

php - Mysql 表关系/外键?

linux - 无法在 Linux 上启动 postgres

Spring JPA/HIbernate 在应用程序启动时创建/更新 View