gpt4 book ai didi

python - 列默认值保存到表中

转载 作者:太空狗 更新时间:2023-10-29 20:40:08 28 4
gpt4 key购买 nike

我目前正在使用具有以下签名的 Column:

Column('my_column', DateTime, default=datetime.datetime.utcnow)

我试图弄清楚如何更改它以便能够执行原始 SQL 插入(INSERT INTO ...)而不是通过 sqlalchemy。基本上我想知道如何在不丢失将列设置为当前 utc 时间的功能的情况下保留表上的默认值。

我使用的数据库是PostgreSQL。

最佳答案

有多种方法可以让 SQLAlchemy 定义在插入/更新时应如何设置值。您可以在 documentation 中查看它们.

您现在执行此操作的方式(为该列定义一个 default 参数)只会影响 SQLAlchemy 何时生成插入语句。在这种情况下,它将调用可调用函数(在您的情况下为 datetime.datetime.utcnow 函数)并使用该值。

但是,如果您要直接运行 SQL 代码,则永远不会运行此函数,因为您将完全绕过 SQLAlchemy。

您可能想要做的是使用 Server Side Default SQLAlchemy 的能力。

试试这个代码:

from sqlalchemy.sql import func
...
Column('my_column', DateTime, server_default=func.current_timestamp())

SQLAlchemy 现在应该生成一个表,使数据库自动将当前日期插入到 my_column 列中。这样做的原因是现在在 数据库 端使用默认值,因此您不再需要 SQLAlchemy 作为默认值。

注意:我认为这实际上会插入本地时间(而不是 UTC)。不过,希望您可以从这里找出其余部分。

关于python - 列默认值保存到表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5351739/

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