Два, по -видимому, одинаковые методы, возвращающие разные результаты flask_sqlalchemyPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Два, по -видимому, одинаковые методы, возвращающие разные результаты flask_sqlalchemy

Сообщение Anonymous »

Я пытаюсь поработать с сообщениями, прошивающая колбу, а также пытаюсь лучше понять Flask_sqlalchemy и SQL в целом.
Я пытаюсь получить сообщение, чтобы появиться, если пользователь входит в неверное Адрес электронной почты мне удалось найти решение, которое работает, но я запутался, почему подобное решение не делает. < /p>

Код: Выделить всё

@app.route('/login', methods=["GET", "POST"])
def login():
email = request.form.get("email")
password = request.form.get("password")
if request.method == "POST":
user = User.query.filter_by(email=email).first()
if not user:
flash("sorry that email doesn't exist")
return redirect(url_for('login'))
elif not check_password_hash(user.password, password):
flash("Password incorrect, please try again")
return redirect(url_for('login'))
else:
login_user(user)
return redirect(url_for('secrets', id=user.id))
return render_template("login.html")
< /code>
Этот код работает совершенно хорошо, и я получаю всплывающее сообщение об ошибке, как и ожидалось, однако, когда я настраиваю < /p>
user = User.query.filter_by(email=email).first()
< /code>
to < /p>
user = db.session.execute(db.select(User).filter_by(email=email)).scalar_one()
< /code>
Итак, блок кода выглядит так .. < /p>
@app.route('/login', methods=["GET", "POST"])
def login():
email = request.form.get("email")
password = request.form.get("password")
if request.method == "POST":
user = db.session.execute(db.select(User).filter_by(email=email)).scalar_one()
if not user:
flash("sorry that email doesn't exist")
return redirect(url_for('login'))
elif not check_password_hash(user.password, password):
flash("Password incorrect please try again")
return redirect(url_for('login'))
else:
login_user(user)
return redirect(url_for('secrets', id=user.id))
return render_template("login.html")

< /code>
Тогда код выбрасывает следующую ошибку < /p>

exc.noresultfound (
sqlalchemy.exc.noresultfound : Строка не было обнаружено, если потребовалось < /p>
< /blockquote>
Я знаю, что эта ошибка поднимается, потому что запись базы данных не найдена, но из чтение Документация, которую я заставил полагать, что не существует различий между использованием двух методов и тем, что db.session.execute (db.select ()) 
является просто обновленной версией user.query И до сих пор я смог использовать оба взаимозаменяемого на протяжении всего моего кода без каких -либо проблем. Я получаю разные результаты с тем, что я Считается, что это две строки кода, которые в основном делают то же самое, или проблема с моим кодом, и эти два метода взаимозаменяемы?>

Подробнее здесь: https://stackoverflow.com/questions/761 ... sqlalchemy
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»