首页 > 解决方案 > SQLAchemy 在 MySQL 中以微秒精度存储日期时间

问题描述

我正在尝试以微秒精度将日期时间存储为 MySQL 中的时间戳:2020-05-10 16:00:00.666666使用 SQLAchemy

这是我的模型:

class Order(Base):
  __tablename__ = "order"

  order_id = Column("id", String(50), primary_key=True)
  published_at = Column(
      "published_at", TIMESTAMP, nullable=True
  )

这是我的插入语句(在会话中完成):

order = Order(
            order_id=id,
            published_at=published_at,  #python datetime of format: 2020-05-10 15:00:00.555555+00:00
        )
session.add(order)
session.commit()

使用 SQLLite 我得到了我的期望。但是,当使用 MySQL 时,我会松开小数部分并得到2020-05-10 15:00:00. 任何想法如何解决这个问题?

提前致谢

标签: pythonmysqlsqlormsqlalchemy

解决方案


TIMESTAMP 已被导入,from sqlalchemy import TIMESTAMP但是这不会让您访问 fsp 参数,因此您必须使用 sql 特定方言:from sqlalchemy.dialects.mysql import TIMESTAMP。然后就可以TIMESTAMP(fsp=6)在模型中使用了。参考https://docs.sqlalchemy.org/en/13/dialects/mysql.html#sqlalchemy.dialects.mysql.TIMESTAMP


推荐阅读