金字塔:如何获取刚刚创建的db行的id?

时间:2012-01-07 19:16:11

标签: python sqlalchemy pyramid

观点:

model = Model('some_title', 'some text')
session.add(model)

return HTTPFound(location='/ads/%s/%s' % (model.id, model.title))

因此,它必须将我重定向到/ads/1/some_title(如果id = 1),而是将我重定向到/ads/None/some_title

如何在此特定示例中创建db行后获取此行的id

谢谢!

1 个答案:

答案 0 :(得分:11)

在您要求model.id时,新模型尚未到达数据库;金字塔等待,直到请求处理程序在提交挂起事务之前返回。要提前获取ID,您必须刷新会话。添加:

model = Model('some_title', 'some text')
session.add(model)

session.flush()
return HTTPFound(location='/ads/%s/%s' % (model.id, model.title))