在我的Flask web应用程序中,我有一个登录系统。当用户登录时,我想在数据库的表中更新用户上次登录时的日期时间。 我用的是这个代码:
@app.route('/login', methods=['POST'])
def do_admin_login():
POST_CODICE_FISCALE = str(request.form['codice_fiscale'])
POST_PASSWORD = str(request.form['password'])
pwd_enc=base64.b64encode(POST_PASSWORD)
Session = sessionmaker(bind=engine)
s = Session()
query = s.query(User).filter(User.codice_fiscale.in_([POST_CODICE_FISCALE]), User.password.in_([pwd_enc]))
result = query.first()
if result:
session['logged_in'] = True
query = s.query(User).filter(User.codice_fiscale.in_([POST_CODICE_FISCALE]).update(User.data_ora_ultimo_accesso=datetime.now()))
query.first()
db.session.commit()
else:
flash('wrong password!')
return home()
但我收到了一个错误:
^{pr2}$怎么了? 谢谢。在
正如错误所说,函数调用参数列表中的关键字不能是表达式,例如} 一个包含列、表达式对的字典:
User.data_ora_ultimo_accesso
,而是identifier。相反,您应该传递^{请注意,由于您立即提交,因此不需要同步会话,因为无论如何,所有状态都将过期。在
您还可以进行一些更改,以提高代码的可读性。例如,而不是
^{pr2}$只是
与仅仅测试相等性相比,检查一个包含1项的列表是否包含某些内容没有任何意义。在
最后,您创建了一个新的
Session
类和它的一个实例s
,但是您提交了一个不同的会话:db.session
,您应该一直使用它。这意味着您的更新不会发生,因为该会话的事务实际上没有提交。在相关问题 更多 >
编程相关推荐