簡體   English   中英

SQLAlchemy Query返回None

[英]SQLAlchemy Query returning None

我在我的ubuntu 16和Nginx + uwsgi上有一個使用SQLAlchemy和MySQL-server的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()

會成功的。

謝謝

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM