Postgresql sqlalchemy 默认时间 now() 一遍又一遍地给出相同的时间

2023-12-02

我的表内有一个字段,即时间

time = db.Column(db.Time, default=datetime.datetime.now().time(), nullable=False)

由于某种原因,它一直默认为同一时间而不是实际的系统时间

"23:53:27.34808"
"20:10:29.613031"
"20:10:29.65371"
"20:10:29.230696"
"20:10:29.613031"
"01:40:41.962449"
"20:10:29.375499"
"09:48:38.981206"
"10:42:38.56931"
"10:42:38.56931"
"10:42:38.56931"
"10:42:38.541895"
"10:42:38.56931"
"10:42:38.56931"
"10:42:38.56931"
"05:01:44.076726"
"10:42:38.56931"
"15:15:18.271026"
"07:29:20.49368"
"15:15:18.271026"
"15:15:18.271026"

如果你查看时间,有 4 或 5 个相同的时间,并且默认选项现在应该需要一些时间

有什么想法可能导致它吗?


default=datetime.datetime.now().time()将在导入时评估一次,导致所有实例的观察到的行为被分配相同的值。

提供 Python 函数作为默认值时,通常的解决方案是提供函数对象:

default=func, ....

但在这种情况下,涉及两个函数调用(.now() and .time()),所以解决方案是定义一个执行以下两项操作的函数(或 lambda):

def default_time():
    return datetime.datetime.now().time()

...
    time = db.Column(db.Time, default=default_time, nullable=False)

使用这种方法,default_time每次需要时都会被调用,并为每个实例返回一个新值。

另请参阅 SQLAlchemy有关使用 Python 函数作为默认值的文档.

正如用户 Belayer 在中暗示的那样comments,通常将生成时间戳委托给数据库而不是在 Python 中生成它们。在这种情况下,您将设置服务器默认值列上的属性,例如这样:

time = db.Column(db.Time, server_default=sqlalchemy.text('NOW()'))

or

time = db.Column(db.Time, server_default=sqlalchemy.func.now())

数据库端有各种函数可以生成时间戳,并且它们通常特定于特定的数据库引擎,因此您可能需要研究以找到最适合您需求的函数。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Postgresql sqlalchemy 默认时间 now() 一遍又一遍地给出相同的时间 的相关文章

随机推荐

  • 使用 http.NewRequest POST 数据失败

    我正在尝试使用以下命令将数据从一个 golang 服务传递到另一个 golang 服务http NewRequest 为此 我使用了以下代码 httpClient http Client userserviceUrl http user 7
  • 如何从 BroadcastReceiver 向 Activity 或 Fragment 发送消息

    我有一个接收器 它执行呼叫详细信息保存任务 例如存储来电 去电等 所有这些详细信息都会保存到 sqlite DB 中 如果我的活动没有运行 那就没问题了 有时 当我的活动正在运行时 我会接到一些来电 接收器运行并将数据存储到数据库 UI 不
  • 使用ant删除重复文件?

    有没有办法使用ant删除重复文件 具体来说 如果我在两个不同的输出目录中有相同的文件名 我想从第二个目录中删除它 我想我想出了一个解决方案
  • dplyr r:选择名称位于外部向量中的列[重复]

    这个问题在这里已经有答案了 Purpose 我可以使用选择列dplyr条件是列名位于外部向量中 我发现一些帖子解释了如何使用名称向量对数据框进行子集化 但当向量中的某些名称在数据框中不存在时 我找不到帖子 示例数据集 library tid
  • 如何停止张量流中张量某些条目的梯度

    我正在尝试实现一个嵌入层 将使用预先训练的手套嵌入来初始化嵌入 对于可以在手套中找到的单词 它将被修复 对于那些没有出现在手套中的单词 它会被随机初始化 并且是可训练的 我如何在张量流中做到这一点 我知道整个张量有一个 tf stop gr
  • 带有表达式不需要的结果的 C 宏

    我正在运行以下程序并得到结果为 9 7 我理解为什么输出是 9 但我不明白为什么我得到 7 作为输出 include
  • 从登录参数创建用户对象

    我试图在用户登录后创建一个包含所有用户字段的用户对象 以便我可以从用户的类中检索任何给定的属性 这是用户类 public class User private String username private String password
  • 运行时错误“9”下标超出条件格式代码范围

    我对 VBA 以及一般的任何类型的编程 非常陌生 所以我不确定如何继续 我猜我的错误与条件格式的重叠范围有关 因为当代码以不同的方式设置时 我也会遇到错误 一旦范围不再重叠 这些错误就会得到解决 这里的情况可能并非如此 但我认为了解一下会有
  • 自签名证书可以保护多个 CN / FQDN 吗?

    这是一个有点愚蠢的设置 但这就是我现在正在查看的内容 我正在学习 Kubernetes 我想将自定义代码推送到我的 Kubernetes 集群 这意味着该代码必须作为 Docker 映像提供 可从someDocker 存储库 默认为 Doc
  • 重复调用 Ng-Options 表达式

    我的设备有多个问题
  • 配置 Eclipse 以与 MSYS2 一起使用

    我使用 Eclipse Mars 和 MSYS2 Eclipse 无法识别我的 MSYS2 安装 它包含用于 32 位编译的 Mingw w64 我在互联网上找到的东西不起作用 我应该怎么办 好吧 聚会有点晚了 但看起来还有没什么特别的关于
  • ASP.NET-发送电子邮件

    我正在做一个航班预订系统 我想向用户发送一封电子邮件 其中包含他的旅行的电子机票 电子机票是使用从数据库中获取的预订 ID 以及前面页面中的其他详细信息 例如乘客姓名等 动态生成的 那么我怎样才能将动态生成的电子客票发送到他的电子邮件 ID
  • 与视频同步播放多个音轨之一

    我正在尝试在网络浏览器中播放视频 原始视频带有两个或多个音频流 每个音频流都采用不同的语言 我想让用户可以选择切换他们正在收听的音轨 我尝试使用audioTracks在视频元素上 但尽管说它在大多数浏览器中都支持在标志后面 至少在 Fire
  • req.body 是未定义的意思是应用程序

    我的应用程序有问题 告诉您问题所在的简单方法让我向您展示我的代码 var Meetup require models meetup module exports create function req res var meetup new
  • Mongodb和排序子数组

    不确定这是否可以做到 所以我想问一下 我有以下 mongodb s store abc offers spend 100 00 cashback 10 00 percentage 0 10 spend 50 00 cashback 5 00
  • 在运行时将环境变量传递到 Vue 应用程序

    如何访问 Vue 中的环境变量 这些变量在运行时而不是在构建期间传递给容器 堆栈如下 Vue CLI 3 0 5 Docker 库伯内斯 stackoverflow 和其他地方建议使用 env 文件传递 变量 和使用模式 的解决方案 但这是
  • 自定义域名映射到用户配置文件。

    目前 用户配置文件的格式为 website com username 这很好 然而 一些重度用户希望使用自定义域名 这与 Tumblr 类似 用户被授予 username tumblr com 的子域 但允许他们使用映射到该子域的外部域 我
  • MS Access SQL:聚合最小值但检索其他字段

    这可能是一个非常简单的问题 但我不知道如何在 MS Access 中解决它 以前可能已经回答过 但我没能找到 我有一个包含 3 列的表 col1 是对象 ID col2 和 col3 是测量值 我构建了一个查询 以便对于每个对象 我们都能在
  • 为什么我无法在 lambda 中捕获此按引用 ('&this')?

    我明白了正确的捕捉方式this 修改对象属性 在 lambda 中如下 auto f this 但我对我所看到的以下特点感到好奇 class C public void foo auto f this not captured auto f
  • Postgresql sqlalchemy 默认时间 now() 一遍又一遍地给出相同的时间

    我的表内有一个字段 即时间 time db Column db Time default datetime datetime now time nullable False 由于某种原因 它一直默认为同一时间而不是实际的系统时间 23 53