我继承了一个较旧的数据库,该数据库设置了一个"on update CURRENT_TIMESTAMP",放在一个只能描述项目创建的字段上.使用PHP我一直在UPDATE子句上使用"timestamp = timestamp",但在SQLAlchemy中我似乎无法强制系统使用设置的时间戳.
我没有选择,需要更新MySQL表(数百万行)?
foo = session.query(f).get(int(1))
ts = foo.timestamp
setattr(foo, 'timestamp', ts)
setattr(foo, 'bar', bar)
www_model.www_Session.commit()
Run Code Online (Sandbox Code Playgroud)
我也尝试过:
foo = session.query(f).get(int(1))
setattr(foo, 'timestamp', foo.timestamp)
setattr(foo, 'bar', bar)
www_model.www_Session.commit()
Run Code Online (Sandbox Code Playgroud) 这是How to set DEFAULT ON UPDATE CURRENT_TIMESTAMP in mysql with sqlalchemy? 的姐妹问题?,但专注于 Postgres 而不是 MySQL。
假设我们要创建一个表users,datemodified其中的一列在更新行时默认更新为当前时间戳。MySQL的姐妹PR中给出的解决方案是:
user = Table(
"users",
Metadata,
Column(
"datemodified",
TIMESTAMP,
server_default=text("CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP"),
),
)
Run Code Online (Sandbox Code Playgroud)
如何使用 Postgres 后端获得相同的功能?