给定一个tasks
带有列的模型id: int (primary_key), file_path: string
,使用 SQLAlchemy,我想在一个事务中执行以下操作:
task = Task()
db.add(task)
db.commit()
task.file_path = "/path/to/%d.txt" % task.id
db.commit()
请注意,我需要先 commit() 才能访问task.id
,因此需要两次提交。
这是否可能,或者通过使用某种 lambda,或者通过在Task
模型中编写 setter 函数/插入回调?
我正在使用 PostgreSQL 作为后端,并且知道如何使用数据库中的触发器来做到这一点。我正在寻找一种比 pl/pgsql 解决方案更 Pythonic 的方式。
如果您碰巧知道使用 SQLSoup 的答案,我也将非常感谢。为了完整起见,前两行的 SQLSoup 等效项为task = db.tasks.insert()
,其他 3 行保持不变。