即使日期存在,SQLAlchemy按日期筛选也不会返回

时间:2019-10-12 00:57:17

标签: python flask sqlalchemy flask-sqlalchemy

我正在为我的课程编写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)唯一约束失败:event.date [SQL:INSERT INTO事件(requester_id,名称,日期)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:

0 个答案:

没有答案