Я работаю над кодом Python для своего класса. Я пытаюсь проверить, есть ли что-то в базе данных SQL, потому что это уникальное условие. Python был одним из самых разочаровывающих языков программирования, с которыми я когда-либо работал, и я просто не понимаю, почему это не работает. Я предполагаю, что слишком большая часть логики удалена (общая тема python), что приводит к тому, что вещи ломаются, которые не должны ломаться
Я только попробовал, каков мой код сейчас, ха-ха 'Я не понял, что нужно изменить.
@app.route("/newEvent/", methods=["GET", "POST"])
def new_event():
if "username" not in session:
return redirect(url_for("home"))
if session["status"] != "user":
return redirect(url_for("home"))
if request.method == "POST":
event_on_date = Event.query.filter_by(date=datetime.strptime(request.form["date"], "%Y-%m-%d")).first()
if event_on_date is not None:
flash("event creation failed, event already exists on date")
return redirect(url_for(home))
uid = User.query.filter_by(username=session["username"]).first()
uid = uid.id
db.session.add(Event(uid, request.form["name"],
datetime.strptime(request.form["date"], "%Y-%m-%d")))
db.session.commit()
flash("event created")
return redirect(url_for("home"))
else:
return render_template("newEvent.html")
Если я введу повторную дату, я получу следующее:
sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) Не удалось выполнить ограничение UNIQUE: событие. date [SQL: INSERT INTO event (requestter_id, name, date) VALUES (?,?,?)] [параметры: (2, 'bhgiujhghjyg', '2019-01-01')]
Я предположилчто, поскольку значение, вводимое в базу данных, проверяется перед вводом, оно перехватывает его до того, как это произойдет, однако запрос filter_By для даты просто возвращает None каждый раз
event_on_date = Event.query.filter_by(date=datetime.strptime(request.form["date"], "%Y-%m-%d")).first()
if event_on_date is not None: