check the manual that corresponds to your MySQL server version for the right syntax to use near 'order) values ('徐小波','XuXiaoB','男','1',' at line 1")
阿新 • • 發佈:2020-08-01
在用原生SQL語句插入的時候,報了一個錯,下面我們來看一下我的原生 SQL 和報錯情況
sql = "insert into bluser (name,gender,order) values ('%s','%s','%s')" % (name, gender,order)
可以看出SQL語句是沒有問題的,但是在插入資料庫的時候,卻報錯了,報錯的原因是 order 前面多了半個 (')單引號
pymysql.err.ProgrammingError:
(1064, "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'order) values ('徐小波','男',' at line 1")
1-查過一些答案,說過是字串轉義的問題,加上 pymysql.escape_string(order) 進行字串轉義,但是加上之後依然報錯,而且報錯內容也沒有改變
# sql = "insert into bluser (name,gender,order) values ('%s','%s','%s')" % (name, gender,pymysql.escape_string(order))
2-說的是在建表的時候,欄位名稱與表名稱不能使用這個符號 "'" , 而因該使用這個符號 "`" 也就是鍵盤tab上面那個符號,具體形式如下
CREATE TABLE `order_master` ( 中間省略偏離主題程式碼 ) comment 'XX表';
但是問題依然沒有解決,後來,經過一頓胡亂操作找到解決的辦法
如下圖
也就是在 order 上 添加了 "``" 包起來,然後問題解決了。
sql = "insert into bluser (name,gender,`order`) values ('%s','%s','%s')" % (name, gender,order)