SQLAlchemy查询返回非

2024-10-01 13:30:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我在我的ubuntu16&Nginx+uwsgi上有一个使用SQLAlchemy和MySQL服务器的web应用程序。在

在创建引擎时,我把

echo=True

获取查询的跟踪。我在注册用户时遇到问题,每次在flask登录时调用user_loader,我都会执行:

^{pr2}$

我得到的结果是:

INFO sqlalchemy.engine.base.Engine SELECT user.id AS user_id, user.name AS user_name, user.email AS user_email, user.pass$
Mar 29 23:48:56 ubuntu-512mb-sgp1-01 uwsgi[26160]: FROM user
Mar 29 23:48:56 ubuntu-512mb-sgp1-01 uwsgi[26160]: WHERE user.id = %s
Mar 29 23:48:56 ubuntu-512mb-sgp1-01 uwsgi[26160]:  LIMIT %s
Mar 29 23:48:56 ubuntu-512mb-sgp1-01 uwsgi[26160]: 2017-03-29 23:48:56,517 INFO sqlalchemy.engine.base.Engine ('61', 1)

结果是没有。但是,在上面的例子中,使用user_id=61,我可以在ubuntu中找到mysql shell上的用户来获得用户id 61。在

当我刷新页面几次,结果就会出来了。 一旦用户完成注册,他们将被重定向到登录页面,完成表单后,会显示错误“请注册”,如果现在使用此查询找到用户,则会触发此错误:

^{pr2}$

注册时我的代码是:

user = User(name=name, email=email, password=password)
dbsession.add(user)
dbsession.commit()
return redirect(url_for('login'))

已进行检查以确保名称、电子邮件密码有效。在

谢谢


Tags: 用户nameinfoidbasesqlalchemyemailubuntu
1条回答
网友
1楼 · 发布于 2024-10-01 13:30:01

解决了问题。在

感谢@iljaEverila。在

基本上,我需要确保来自SQLAlchemy的dbsession已经持久化了数据,并且没有挂起的事务。因此,一旦用户注册并调用user_loader,我只需要调用:

dbsession.commit()

然后称之为:

^{pr2}$

会成功的。在

谢谢

相关问题 更多 >