SqlAlchemy 和 PostgreSql 日期时间更新

2 投票
1 回答
7560 浏览
提问于 2025-04-18 05:39

我有一个PostgreSql的表格,我想更新一个带时区的时间戳属性(我也试过不带时间戳的,但也不行)。我正在使用SqlAlchemy的会话来完成这个操作。

我获取了一个已有的记录,然后用当前的时间戳来更新它:

from model import Table
from dbconf import session

t=session.query(Table).filter(Table.id==1).first()
t.available=datetime.now()
session.add(t)
session.commit()

但是执行完这个命令后,数据库里什么都没变。我到底哪里做错了呢?

1 个回答

4

我可以假设你已经有了这个表的模型,你应该在里面添加一个新的更新方法,像这样:

class table(Base):
    __tablename__ = 'table'

    id = Column(Integer, primary_key=True)
    available = Column(DateTime)
    asd = Column(Unicode(255))


    def update(self, available=None, asd = None):  #etc.
        if available:
            self.available = available
        if asd:
            self.asd = asd

然后更新操作就可以这样进行:

import transaction
with transaction.manager:
    t=session.query(Table).filter(Table.id==1).first() #search the object what you want to update
    t.update(available=datetime.now()) #you can update only one or several cell like this

撰写回答