Python/Sqlalchemy/Sqlite - 如何从 sqlite(或任何其他)数据库选择时区感知日期时间?

发布于 2025-01-11 06:49:58 字数 347 浏览 0 评论 0原文

在 sqlalchemy/sqlite 中,我有一个表定义如下:

class MyTable(Base):
    __tablename__ = 'mytable'
    ...
    field_dt = Column(DateTime)

每当我检索记录时,我都必须执行类似的操作,以便使其了解时区:

row.field_dt.replace(tzinfo=dt.timezone.utc) # import datetime as dt

我可以以某种方式在表或字段级别设置一些内容,以便为每个选定的应用应用 tzinfo来自数据库的日期时间?

In sqlalchemy/sqlite I have a table defined as this:

class MyTable(Base):
    __tablename__ = 'mytable'
    ...
    field_dt = Column(DateTime)

Whenever I retrieve the record I have to do something like this in order to make it time zone aware:

row.field_dt.replace(tzinfo=dt.timezone.utc) # import datetime as dt

Can I somehow set something at table or field level that will apply tzinfo for each selected datetime from database?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

遥远的她 2025-01-18 06:49:58

一种可能性是简单地将 @property 添加到您的类中:

class MyTable(Base):
    __tablename__ = 'mytable'
    id = Column(Integer, primary_key=True, autoincrement=False)
    field_dt = Column(DateTime)  # naive, saved as UTC

    @property
    def field_dt_aware(self):
        return self.field_dt.replace(tzinfo=dt.timezone.utc)


mt = MyTable(id=1, field_dt=dt.datetime(2022, 2, 22, 3, 4, 5))
print(mt.field_dt)  # 2022-02-22 03:04:05
print(mt.field_dt_aware)  # 2022-02-22 03:04:05+00:00

One possibility would be to simply add a @property to your class:

class MyTable(Base):
    __tablename__ = 'mytable'
    id = Column(Integer, primary_key=True, autoincrement=False)
    field_dt = Column(DateTime)  # naive, saved as UTC

    @property
    def field_dt_aware(self):
        return self.field_dt.replace(tzinfo=dt.timezone.utc)


mt = MyTable(id=1, field_dt=dt.datetime(2022, 2, 22, 3, 4, 5))
print(mt.field_dt)  # 2022-02-22 03:04:05
print(mt.field_dt_aware)  # 2022-02-22 03:04:05+00:00
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文