[英]Getting Error while adding data in sqlite3 database using Flask
我試圖在現有數據庫中添加數據但得到錯誤輸出,有一個小錯誤請幫助我。謝謝
代碼 ::
@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>
輸出應該是::“記錄已成功添加”,但我收到“插入操作中的錯誤”。
我的猜測是你的代碼中有一個錯字:
addr = request.form['add']
應該
addr = request.form['addr']
但是您的代碼需要一些關於連接的修復:
con.commit()
在with
塊的正常退出時被調用,並且con.rollback()
在with
塊由於異常退出時被調用(參見文檔)。 您不需要這兩個顯式調用。
此外,您將con.close()
放在return
語句之后,這意味着它將永遠不會被執行。 只需交換線路,或考慮在程序開始時打開連接。
在except:
,提出一個raise
以重新引發最后一個異常並在此處發布回溯。
可能的問題是:
request.form["some key"]
會引發 KeyError 異常。為此掙扎了好幾個小時。 首先,您需要創建一個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>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.