gpt4 book ai didi

python - 如何在 flask-SQLAlchemy 中使用 Default 和 Onupdate 等值

转载 作者:太空狗 更新时间:2023-10-30 00:23:27 27 4
gpt4 key购买 nike

我的代码,

class User(db.Model, UserMixin):
uid = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(250), unique=True)
password = db.Column(db.String(250))
name = db.Column(db.String(250))
created_on = db.Column(db.TIMESTAMP, default=False)
modified_on = db.Column(db.TIMESTAMP, onupdate=datetime.datetime.now)

我想创建一个字段 timestamp,它将有一个默认值 timestamp,onupdate 将再次更改为当前时间戳。但是当我运行迁移时,这不会在 MySQL 中创建具有默认值或更新值的字段,我做错了什么?

最佳答案

SQLAlchemy 的默认值和 SQL 默认值之间存在差异。通常,设置 SQLAlchemy 默认值就足够了,因为您通常不应该直接与服务器交互。如果你真的想在服务器端呈现默认值,请使用 server_defaultserver_onupdate 参数到 Column

db.Column(
db.DateTime, nullable=False,
server_default=db.func.current_timestamp(),
server_onupdate=db.func.current_timestamp()
)

就我个人而言,我不喜欢这个解决方案,因为它将行为从您的应用程序转移到一个单独的位置,您以后可能会忽略它。在 Python 端执行默认设置更简单:

db.Column(
db.DateTime, nullable=False,
default=datetime.utcnow,
onupdate=datetime.utcnow
)

另外,考虑从使用 datetime.now 更改为 datetime.utcnow,因为 UTC 在幕后更容易使用。仅在向用户显示内容时才转换为本地时间。

关于python - 如何在 flask-SQLAlchemy 中使用 Default 和 Onupdate 等值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28278328/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com