flask postgresql ERROR: syntax error at or near "
本问题已经有最佳答案,请猛点这里访问。
我是新的烧瓶和开发一般这个错误是如此主观我甚至不能谷歌甚至看到堆栈上的几个帖子我无法弄清楚一切正确,字面意思我拉我的头发
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | @app.route("/bookPage/" , methods=["GET" ,"POST"]) def bookPage(all): global all2 if request.method =="POST": #variables list1 = ['101','milk','3','jack','2018-09-27 16:33:58.553349' ] db.execute("INSERT INTO review_table (id, review, rate , user , time_t) VALUES (:id, :review, :rate , :user , :time_t)" , {"id" : list1[0],"review" : list1[1],"rate": list1[2] ,"user":list1[3] ,"time_t" :list1[4] }) db.commit() print( f"review has been added of value : ,{review} ,and rate of : , { rate_i} , , by user : , { user_i }, , and Id : , {id_i}" ) else: print(" ",all," ") all1 = all.split(",") all2 =[a.strip("()").replace("'","") for a in all1] return render_template("bookPage.html",all1=all2) |
每次我执行它我得到这个错误(错误:在"用户"或附近的语法错误)他指向"用户"在
1 | "INSERT INTO review_table (id, review, rate , user , time_t) |
一切都正确我不知道但我已经多次执行数据库执行
db中的表是空的postgresql列
列类型注释
- id整数
- 审查字符变化NULL
- rate integer NULL
- 用户字符变化为NULL
-
time_t没有时区的时间为NULL
请让我知道为什么会这种情况继续发生
我用常量字符串"test"更改了用户输入我得到了同样的错误...
我认为这个错误具有误导性
在将值发送到数据库之前,需要将值转换为正确的类型。
1 2 3 4 5 6 7 | user_i = '' rate_i = request.form.get("rate", type=int) user_i = session['user'] time_i = datetime.now() id_i = int(all2[0]) db.execute("INSERT INTO review_table (id, review, rate , user , time_t) VALUES (?, ?, ? , ? , ?)" , (id_i, review_i, rate_i , user_i , time_i )) |
让你的数据库用时间和日期填充该字段,添加到
在你的
1 | db.execute("INSERT INTO review_table (id, review, rate , user ) VALUES (:id, :review, :rate , :user )" , {"id" : list1[0],"review" : list1[1],"rate": list1[2] ,"user":list1[3] }) |
您可以找到此解决方案的其他变体:Sqlite:CURRENT_TIMESTAMP是GMT,而不是机器的时区