我們知道Python3.x引入了新的字符串格式化語(yǔ)法。不同于Python2.x的
"%s %s "%(a,b)
Python3.x是
"{0} {1}".format(a,b)
今天我在用MySQLdb時(shí),需要用帶參數(shù)的
cursor.execute(sql,param)
語(yǔ)句來(lái)完成SQL操作。被其他文章的陳舊說(shuō)法給誤導(dǎo),用了
cursor.execute('insert into test values(%s,%s,%s)',param)
其中param是一個(gè)元組,表示要插入的數(shù)據(jù),元組中的各個(gè)元素即是數(shù)據(jù)庫(kù)中各列的值。
但是執(zhí)行起來(lái)總是會(huì)拋出數(shù)據(jù)庫(kù)異常,錯(cuò)誤信息:
【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'(%s,%s,%s)'at line……(以下省略)。
其實(shí)只要改成這樣就好:
cursor.execute('insert into test values({0},{1},{2})',param)
實(shí)話說(shuō),Python3為了填上Python2的各坑導(dǎo)致了不向下兼容,使得學(xué)習(xí)Python3的成本提高了不少。但是為了不阻礙科技發(fā)展、社會(huì)進(jìn)步,我還是毅然決然投身新版本……