SQLAlchemy - 没有时区的时间

问题描述 投票:0回答:1

我试图将 SQLAlchemy 中表示为字符串的时间保存到 Postgresql 表中,该表的列类型为不带时区的时间。 我已将 SQLAlchemy 列定义为 Time(timezone=False)。 输入值如下所示:“09:23:00”。 当尝试保存数据时,我总是得到 sqlalchemy.exc.InterfaceError: (postgresql.exceptions.ParameterError)无法打包参数 $2::TIME without TIME ZONE 进行传输。

任何提示/帮助将不胜感激。

sqlalchemy py-postgresql
1个回答
0
投票

当引擎配置了 py-postgresql 驱动程序时,会发出此错误消息。可以通过将时间作为 datetime.time 实例而不是字符串传递来避免这种情况(GitHub 上的类似错误报告)。

import atexit
import datetime as dt

import sqlalchemy as sa

metadata = sa.MetaData()
tbl = sa.Table('t32560515', metadata, sa.Column('time', sa.Time(timezone=False)))

engine = sa.create_engine('postgresql+pypostgresql://souser:password@localhost:5432/test', echo=True)
atexit.register(engine.dispose)
metadata.drop_all(engine)
metadata.create_all(engine)

time_ = '09:23:00'
time_ = dt.time(*map(int, time_.split(':')))
with engine.begin() as conn:
    conn.execute(tbl.insert().values(time=time_))
test# table t32560515 ;
   time   
══════════
 09:23:00
(1 row)

在 SQLAlchemy 1.4 中已弃用使用 py-postgresql 驱动程序。 SQLAlchemy 2.0 中删除了对驱动程序的支持。

© www.soinside.com 2019 - 2024. All rights reserved.