当前位置: 首页 > 面试题库 >

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

印瑾瑜
2023-03-14
问题内容

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

# 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参数。



 类似资料:
  • 我有一个简单的用户模型,定义如下: 当我创建一个新的User对象时,我的字段被设置为当前时间。我想做的是,每当我保存对我的用户对象的更改时,我的字段会自动设置为当前时间。 我找遍了留档,但我似乎找不到任何与此有关的参考资料。我对SQLAlChemy非常陌生,所以我真的没有以前的经验可以借鉴。 希望得到一些反馈,谢谢。

  • 在之前的一家公司作为终端用户使用了几年后,我对Jira admin这方面的工作还不熟悉。我们使用的是标准的Jira工作流程。我正在努力解决的情况如下。我正在尝试匹配我们旧的专有问题数据库的一些功能。现在我使用了许多标准的Jira字段,只有两个新的自定义字段(两个单选列表都是我手动填充的): 1) Customer=向我们的支持团队发送新问题电子邮件的客户姓名2)Customer Contact=当

  • 问题内容: 我已经看到这个问题在互联网上流传,但是我还没有找到可行的解决方案。基本上,我想加载我的应用程序并按下一个按钮;然后,该按钮操作将在已加载到Web视图中的网站中填写用户名和密码(或等待onPageFinished)。最后,登录页面上的提交按钮将被激活。 据我了解,这可以通过使用loadUrl(javascript)进行Java注入来完成,但是我不知道用Java命令填写字段是什么。对于iO

  • 简介 Laravel 可以用 seed 类轻松地为数据库填充测试数据。所有的 seed 类都存放在 database/seeds 目录下。你可以任意为 seed 类命名,但是更应该遵守类似 UsersTableSeeder 的命名规范。Laravel 默认定义的一个 DatabaseSeeder 类。可以在这个类中使用 call 方法来运行其它的 seed 类从而控制数据填充的顺序。 编写 See

  • 问题内容: 我一直在尝试使用从数据库查询的数据加载TableView,但似乎无法使其正常工作。 这是我第一次尝试用数据库查询项填充数据库的情况,以防我的代码看起来杂乱无章,而且效果不佳。 FXML是通过JavaFx SceneBuilder完成的。 这是数据库查询类: 这是通过JavaFx场景生成器生成的FXML脚本: 问题答案: 这是将数据从数据库填充到tableView的最佳解决方案。 这是参