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 です。
行が新しい場合 (つまり、一意のキー「タイトル」が存在しない場合)、渡した値を含む新しい行が正しく追加されます。
しかし、行が既存のものである場合、それは単に...何もしません。行を新しい値 (つまり、フォームから抽出された値) で更新したいと思います。どうすればそれを達成できますか?