嘿伙计们,我目前正在使用烧瓶并遇到错误
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
【讨论】:
以上是关于嘿伙计们,我目前正在使用烧瓶并遇到错误的主要内容,如果未能解决你的问题,请参考以下文章