我正在尝试在现有数据库中添加数据,但输出错误,有一个小错误,请帮帮我。谢谢
代码::
@app.route('/')
def new_student():
return render_template('student.html')
@app.route('/addrec', methods=['POST', 'GET'])
def addrec():
if request.method == 'POST':
try:
nm = request.form['nm']
addr = request.form['add']
city = request.form['city']
pin = request.form['pin']
with sql.connect("database.db") as con:
cur = con.cursor()
cur.execute('''INSERT INTO students (name,addr,city,pin)
VALUES(?, ?, ?, ?)''',(nm,addr,city,pin))
con.commit()
msg = "Record successfully added"
except:
con.rollback()
msg = "error in insert operation"
finally:
return render_template("result.html", msg=msg)
con.close()
if __name__ == '__main__':
app.run(debug=True)
我的result.html文件是:
<!doctype html>
<html>
<body>
result of addition : {{ msg }}
<h2><a href = "\">go back to home page</a></h2>
</body>
</html>
输出应为:“记录添加成功”,但出现“插入操作错误”。
答案 0 :(得分:1)
我的猜测是您的代码中有错字:
"cors"
应该是
addr = request.form['add']
但是您的代码需要一些有关连接的修补程序:
在addr = request.form['addr']
块的正常退出时调用 con.commit()
,如果由于异常而退出with
块,则调用con.rollback()
(请参阅{{3 }})。您不需要这两个显式调用。
此外,您将with
放在了con.close()
语句之后,这意味着它将永远不会执行。只需换行,或者考虑在程序开始时打开连接。
答案 1 :(得分:0)
在except:
之后,放置一个raise
以重新引发最后一个异常,并将追溯信息发布到此处。
可能的问题是:
request.form["some key"]
会引发KeyError异常。答案 2 :(得分:0)
为此挣扎了好几个小时。首先,您需要创建一个python文件并运行它来创建一个数据库。之后运行主python文件。它对我有用。无需将“add”更改为“addr”,因为在 student.html 中,名称被指定为“add” 还要创建一个 home.html 文件
<!DOCTYPE HTML>
<HTML>
<head>
<title>home</title>
</head>
<body>
<h2>Hi, welcome to the website</h2>
<a href="/enternew">Add New Record</a><br><be>
<a href ="/list">Show List</a><br><be>
</body>
</html>