嘿伙计们,我目前正在使用烧瓶并遇到错误

Posted

技术标签:

【中文标题】嘿伙计们,我目前正在使用烧瓶并遇到错误【英文标题】:Hey Guys, I'm currently working with flask and got an error 【发布时间】:2021-10-31 18:25:24 【问题描述】:

我为数据库创建了一个程序,但出现此错误

TypeError: 'NoneType' 对象不可下标

我创建了 2 个单独的文件 l:

Demo1.py model.py

主文件内的代码(Demo1.py):

@app.route("/", methods=["GET", "POST"]) 

def home():
    if request.method == "GET":
        return render_template("Index.html", message="Bonjour!")
    else:
        username = request.form["username"]
        password = request.form["password"]
        if username == "Tom" and password == "sau123":
            message= model.show_color("Tom")
            return render_template("football.html", message=message)
        else:
            error_message="Failed, Try Again"
            return render_template("Index.html", message=error_message )


@app.route("/football", methods=["GET"])

def football():
    return render_template("football.html")


if __name__ == "__main__":
    app.run(port=5000, debug=True)

现在,让我提一下model.py 中的代码:

import sqlite3

def show_color(username):
    connection = sqlite3.connect("flask.db", check_same_thread=False)
    cursor=connection.cursor()
    cursor.execute("""SELECT color FROM users WHERE username="username" ORDER BY pk DESC;""".format(username=username))
    color = cursor.fetchone()[0]

    connection.commit()
    cursor.close()
    connection.close()

    message= "username/' favorite color is color.".format(username=username, color=color)
    return message

显示错误的图像如下:

我不明白为什么会出现此错误。

【问题讨论】:

检查数据库中是否存在用户名和对应的颜色。基本上在show_color中执行了那一行之后,就是说对应的条目不存在了。 表单是否传回了一个空值? 【参考方案1】:

cursor.fetchone() 可能返回 None(意味着 SELECT 没有结果)。

为了验证你可以修改show_color

def show_color(username):
    connection = sqlite3.connect("flask.db", check_same_thread=False)
    cursor=connection.cursor()
    cursor.execute("""SELECT color FROM users WHERE username="username" ORDER BY pk DESC;""".format(username=username))
    
    first_result = cursor.fetchone()
    if first_result  is None:
        message= "username doesn't have any favorite color.".format(username=username)
    else:
        color = first_result[0] 
        # connection.commit() # I do not understand this commit without any modification
        message= "username/' favorite color is color.".format(username=username, color=color)
    cursor.close()
    connection.close()


    return message

https://docs.python.org/3/library/sqlite3.html#sqlite3.Cursor.fetchone

【讨论】:

以上是关于嘿伙计们,我目前正在使用烧瓶并遇到错误的主要内容,如果未能解决你的问题,请参考以下文章

嘿,我遇到了关于 git 和 heroku 的问题

资源资产合并:文件名必须以.XML结尾

春季批处理调度期间出现的错误

伙计们,拜托,我无法解决这个问题,ipware,javascript和express

函数不能访问同一个类中定义的对象.. !可能是一个错误?

获取最后位置返回空对象引用错误