如何使用 add() 更新数据库中的一行?
这是我尝试过的代码:
@view_config(route_name='doc_user_edit', renderer='doc/edit.mako')
def doc_user_edit(request):
""" Edit a documentation page. """
message = ""
try:
page = DBSession.query(Page).filter_by(title=request.matchdict['pagename']).first()
except DBAPIError:
return Response('An error occured while trying to contact the database', content_type='text/plain', status_int=500)
if page is None:
return HTTPNotFound('No such page')
if 'form.submitted' in request.params:
page = Page(request.params['title'], request.params['content'], datetime.now())
DBSession.add(page)
DBSession.commit()
message = _('Page edited')
return {'p':page,
'm':message,
'save_url': request.route_url('doc_user_edit', pagename=page.title),
}
注意:DBSession 是一个 scoped_session。
如果该行是全新的(即不存在唯一键“title”),它会正确添加一个带有我传递给它的值的新行。
但是,如果该行是现有行,它只是做......什么都不做。我希望它用新值(即从表单中提取的值)更新行。我怎样才能做到这一点?