加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – SQLAlchemy查询返回无

发布时间:2020-12-20 13:16:54 所属栏目:Python 来源:网络整理
导读:我在我的ubuntu 16 16上有一个使用SQLAlchemy和 MySQL-server的Web应用程序. Nginx uwsgi. 在创建引擎的同时,我放了 echo=True 获取查询的跟踪.我有注册用户的问题,每次在flask登录时调用user_loader,我执行: dbsession.query(User).filter_by(id=user_id).
我在我的ubuntu 16& 16上有一个使用SQLAlchemy和 MySQL-server的Web应用程序. Nginx uwsgi.

在创建引擎的同时,我放了

echo=True

获取查询的跟踪.我有注册用户的问题,每次在flask登录时调用user_loader,我执行:

dbsession.query(User).filter_by(id=user_id).first()

我得到的结果是:

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.

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

dbsession.query(User).filter_by(id=user_id).first()

在注册时我的代码是:

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

检查已完成,以确保名称,电子邮件密码有效.

谢谢

解决方法

解决了这个问题.

感谢@iljaEverila.

基本上我需要确保来自SQLAlchemy的dbsession已经持久保存数据并且没有待处理的事务.因此,一旦用户注册并调用user_loader,我只需要调用:

dbsession.commit()

然后调用这个:

dbsession.query(User).filter_by(id=user_id).first()

会成功的.

谢谢

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读