gpt4 book ai didi

python - SQLAlchemy 查询返回无

转载 作者:可可西里 更新时间:2023-11-01 07:09:29 25 4
gpt4 key购买 nike

我在我的 ubuntu 16 和 Nginx + uwsgi 上有一个使用 SQLAlchemy 和 MySQL 服务器的 Web 应用程序。

在创建引擎时,我把

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()

会成功的。

谢谢

关于python - SQLAlchemy 查询返回无,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43106192/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com