【mysql資料庫】python指令碼執行SQL語句,關於字串變數的注意事項
轉載一篇網友介紹Python 資料庫的Connection、Cursor兩大物件,寫的非常好。
https://blog.csdn.net/guofeng93/article/details/53994112
最新在使用python操作資料庫,發現使用cursor.execute執行mysql資料時,字串變數的規範用法,總結如下。
1、字串變數與SQL語句在同一個表示式中時,萬用字元使用 '%s',有單引號。字串變數與SQL語句在不通過表示式中時,萬用字元使用 %s,無單引號。
2、SQL語句中的非字串變數時,萬用字元使用 %s,任何時候都無單引號。
測試資料:
1、構建1個測試表test,包含3個欄位,分別是int、varchar、varchar型別。
2、測試SQL語句中包含1個字元變數
測試語句 | 測試結果 |
cursor.execute("insert into `test`(`姓名`) values('%s')", ('路人甲')) 或 cursor.execute("insert into `test`(`姓名`) values('%s')" % ('路人甲')) 或 name = '路人甲' 或 name = '路人甲' |
失敗,寫入資料庫的名字是字元 %s,不是預期的 路人甲 |
cursor.execute("insert into `test`(`姓名`) values(%s)" , ('路人甲')) 或 cursor.execute("insert into `test`(`姓名`) values(%s)" % ('路人甲')) 或 name = '路人甲' |
失敗,語法錯誤 |
cursor.execute("insert into `test`(`姓名`) values('路人甲')") 或 name = '路人甲' |
成功,資料庫寫入路人甲 粗體部分為推薦用法 |
3、測試2個變數,分別測試2個都是字串,1個整形和1個字串
測試語句 | 測試結果 |
number = -100 或 number = -100 或 number = -100 或 number = -100 或 number = -100 |
失敗,語法錯誤 |
number = -100 或 number = -100 或 number = -100 或 number = -100 或 number = -100 |
成功,資料庫寫入 -100和路人甲 粗體部分為推薦用法 |