当前位置: 首页 > 知识库问答 >
问题:

如何自动填充SQLAlChemy数据库字段?(烧瓶-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字段被设置为当前时间。我想做的是,每当我保存对我的用户对象的更改时,我的date_updated字段会自动设置为当前时间。

我找遍了留档,但我似乎找不到任何与此有关的参考资料。我对SQLAlChemy非常陌生,所以我真的没有以前的经验可以借鉴。

希望得到一些反馈,谢谢。

共有2个答案

艾飞宇
2023-03-14
date_created  = db.Column(db.DateTime,  default=db.func.current_timestamp())
date_modified = db.Column(db.DateTime,  default=db.func.current_timestamp(),
                                       onupdate=db.func.current_timestamp())
郁和通
2023-03-14

只需添加server_default默认参数到列字段:

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}\u上的列名

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

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

[编辑2]:将onupdate替换为server\u onupdate参数。

 类似资料:
  • 问题内容: 我有一个简单的用户模型,定义如下: 当我创建一个新的User对象时,我的字段将设置为当前时间。我想要做的是使它每当我将更改保存到User对象时,我的字段就会自动设置为当前时间。 我已经仔细阅读过文档,但是对于我一生来说,我似乎找不到任何对此的引用。我是SQLAlchemy的新手,所以我确实没有任何经验可以借鉴。 问题答案: 只需在列字段中添加或参数: 我更喜欢列名称。;) 有关列插入/

  • 问题内容: 我对Flask框架相当陌生,并且正在为Webportal创建一个编辑配置文件页面。我被困在某个位置,无法自动填写表格。 这是我的表单类: 这是我评估表格的功能。 而我的表单的html模板是form: 我有一个用户类的对象。然后我要从该对象中预填充此表单。如何预填充表单中的值。我正在尝试在此处实现编辑配置文件功能。 问题答案: 创建对象时,需要将其传递给表单。 您将遇到一些麻烦 它创建表

  • 我正在建立一个小网站,我已经在SQLAlChemy中拥有了我所有的模型。该网站将发布一些离线计算的信息。只有结果将被发布到一个精简的数据库,即它包含结果,而不是原始数据,但网站需要查询结果。 我将使用Flask,因为我的模型已经用Python驱动了(通过SWIG在C中进行了一些繁重的工作),我不想使用Django。 我敢肯定,以前有人问过这个问题,通常没有太多理由的咒语是“使用炼金术”。问题是为什

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

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

  • 我有一个简单的数据库在mysql和我尝试打印结果,但编码是错误的。它发生在orm模型和纯sql模式中。 在相同的sqlalchemy conf下,纯使用工作而烧瓶应用程序不使用。我也试过用php进行简单的测试,它工作的还可以。 我做错了什么? Mysql变量 在config.py中 带有flask-script的命令 输出 python test.py 如果我在每个大小写中打印类型,唯一有效的大小