【发布时间】:2010-01-07 05:54:06
【问题描述】:
您好,我正在尝试在用户登录时更新用户行。我只是想将用户登录次数增加一。这是 post_login 控制器方法中的代码:
@expose()
def post_login(self, came_from=url('/')):
"""
Redirect the user to the initially requested page on successful
authentication or redirect her back to the login page if login failed.
"""
if not request.identity:
login_counter = request.environ['repoze.who.logins'] + 1
redirect(url('/user/login', came_from=came_from, __logins=login_counter))
user_name = request.identity['repoze.who.userid']
user = User.by_user_name(user_name)
user.tll_num_logins += 1
user.tll_last_login = datetime.now()
redirect(came_from)
用户记录根本没有在数据库中更新。 TG 文档说事务管理器应该刷新所有事务并自动执行所有未完成的 SQL,但它似乎不适用于更新。我尝试在手动提交后放入 DBSession.commit() 但收到错误消息。同样,在控制器方法中添加 DBSession.flush() 不会出错,但实际上也不会更新记录。
【问题讨论】:
-
从 DBSession.commit() 得到什么错误信息?
标签: python sqlalchemy turbogears2