最近一段時間開始使用MySQL,使用的是pymysql庫。
其中遇到過一些小問題,值得記錄一下,以便今后使用的時候注意到。
- 表格的建立,代碼如下:
cursor.execute("create table %s(id char(100))" % tb_name)# 這樣寫可能報錯
其中tb_name就是自己定的表格名稱,在使用過程中發現,當表格名稱的字符串中帶有'-'的時候(如test-abc),會報錯,似乎是'-'在MySQL代碼中有特殊意義所以讓程序誤以為這是一個命令。同樣的,如果表格的名稱與代碼語句重復,例如表格名稱就叫做'table',也可能使程序報錯,因此可以將表格的名稱用兩個`括起來(注意,這個點不是單引號,而是tab建上面的那個小撇)。
修改代碼如下:
cursor.execute("create table `%s`(id char(100))" % tb_name)
2.信息的插入,代碼如下:
cursor.execute(”insert into `%s`(id) values('%s')” % (tb_name,data))# 這種可能出錯
但是我發現,當需要插入的字符串data中含有'(單引號)的時候,程序就會報錯,這比較好理解,大概就是因為信息里面的單引號和代碼的單引號形成了交叉,讓代碼變得混亂了,這種方式就只能盡量讓代碼中能夠區分單引號的,所以我使用了三引號和雙引號做區分。修改代碼如下:
cursor.execute('''insert into `%s`(id) values("%s")''' % (tb_name,data))
3.信息的錯誤
我設置了一個字段為int,這個字段一般情況下都是整數,但是也可能為空值,所以一當這個值為空的時候就報錯。
目前的解決辦法是將這個字段改為char類型算了。其他方法感覺還不如留空。