如何将值插入SQLAlchemy TIMESTAMP列

时间:2019-04-02 11:57:14

标签: python python-3.x postgresql sqlalchemy timestamp

我正在尝试使用SQLAlchemy设置时间戳列的值,但遇到以下错误:

column "timestamp" is of type timestamp without time zone but expression is of type numeric

我的桌子看起来像下面这样:

class SomeTable(db.Model):
    timestamp = Column(TIMESTAMP)

插入尝试如下:

SomeTable(timestamp=time.time())

当我使用datetime.now()而不是time.time()时,记录被插入到表中,但是当我从数据库中选择记录时,记录具有以下格式:

2019-04-02 11:44:24.801046

因此,看起来TIMESTAMP字段未存储时间戳格式。

这是常规的postgres行为吗?还是我错过了什么?

1 个答案:

答案 0 :(得分:1)

我认为这很好,因为下一步是正确的:

Column('timestamp', TIMESTAMP(timezone=False), nullable=False, default=datetime.now())

因此默认情况下,您有datetime.now(),这是关于演示文稿的

datetime.now()将给您'2019-04-02 14:21:33.715782

datetime.now().isoformat()将给您'2019-04-02T14:31:09.071147'

使用以下命令进行检查:http://www.sqlfiddle.com/#!15/d0c6a/8

如果取消注释第三次插入,将获得与您完全相同的异常