use*_*533 2 python postgresql time datetime sqlalchemy
我在 python 3.7 中使用 postgres 和 sqlalchemy
我有一个类型为“time with timezone”的列并尝试插入一个新行。
TAB = Table("tab", METADATA,
# ...
Column('created', DateTime(timezone=True), default=datetime.now)
)
Run Code Online (Sandbox Code Playgroud)
现在我尝试插入一个新行。我收到了这条消息:
(psycopg2.ProgrammingError) column "created" is of type time with time zone but expression is of type timestamp without time zone
Run Code Online (Sandbox Code Playgroud)
有人知道我必须做什么吗?
谢谢!
主要问题似乎是您将 SQLALchemyDateTime列映射到 PostgreSQLtime with time zone列。你应该调查一下Time。
如果您打算使用 PostgreSQLtimestamp with time zone列,那么您仍然需要重新考虑您的默认设置,因为datetime.now它不知道时区。有几种方法可以解决这个问题,但一个简单的方法是使用 SQLAlchemy 来func.now()代替。例如:
from sqlalchemy import Column, DateTime, Integer, MetaData, Table
from sqlalchemy.sql import func
metadata = MetaData()
example = Table('example', metadata,
Column('id', Integer, primary_key=True),
Column('date', DateTime(timezone=True), default=func.now())
)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6535 次 |
| 最近记录: |