Python2 和 Python 3 的語(yǔ)法還是有很多區(qū)別的
比如說python2中的 httplib 在python3.5需要怎么改
python3把httplib改了名字,對(duì)應(yīng)的庫(kù)是http.client
1、包用 import 導(dǎo)入時(shí)可以帶出來,但是和別的導(dǎo)入的庫(kù)格式是不一樣的(http.client 是帶框顯示的)

運(yùn)行代碼時(shí)提示 'http' is not a package

原因分析:文件名與包名重名了
解決辦法:對(duì)文件名重命名

2、執(zhí)行該文件( httprequest )時(shí)調(diào)用上次的類的方法有錯(cuò)誤,單獨(dú)執(zhí)行上周的函數(shù)是可以正常運(yùn)行的
錯(cuò)誤信息
selectone() missing 1 required positional argument: 'condition'


原因分析:實(shí)例化不對(duì)(實(shí)例化數(shù)據(jù)庫(kù)操作)
仔細(xì)檢查發(fā)現(xiàn)上圖中 實(shí)例化mysql 處理類 缺少括號(hào)
3、TypeError: 'NoneType' object is not subscriptable

原因分析:表創(chuàng)建后沒有插入數(shù)據(jù),是一張空表
一不小心,導(dǎo)致變量是空值NoneType而導(dǎo)致此錯(cuò)誤的
解決辦法很簡(jiǎn)單,確保你所使用的(字典)變量,里面包含了正確的(鍵)值。(表中插入數(shù)據(jù))
4、AttributeError: 'module' object has no attribute 'xxx'
AttributeError:嘗試訪問未知的對(duì)象屬性

原因分析:函數(shù)調(diào)用錯(cuò)誤
解決辦法:查看源代碼中定義的函數(shù),與之匹配
5、TypeError("'int' object is not iterable")

修改字段 header_interface 的值為文本格式后繼續(xù)報(bào)錯(cuò)(詳見第6點(diǎn)),真的是錯(cuò)誤不斷啊
6、json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

最后還是去修改字段的值,改成字典格式的
update case_weatherreport
set header_interface='{"Accept-Encoding": "gzip, deflate","Accept-Language": "zh-CN"}'
where id=1;
【總結(jié)】
折騰 json 的話,前提要了解json的語(yǔ)法和規(guī)則,其次才是用某種語(yǔ)言去處理json。
7、TypeError: tuple indices must be integers or slices, not str

原因分析:sql 返回的是tuple,而不是dict,所以不能使用interface_params["key"]的語(yǔ)法
解決辦法:返回字典(dict)表示的記錄,就要設(shè)置cursorclass參數(shù)為 pymysql.cursors.DictCursor類
1)在調(diào)用connect方法建立連接時(shí)設(shè)置
conn = pymysql.connect(host='localhost', port=3306, user='root',
passwd='123456', db='zyptest', charset='utf8',
cursorclass=pymysql.cursors.DictCursor)
2)在創(chuàng)建游標(biāo)時(shí)設(shè)置
cur = conn.cursor(cursorclass=pymysql.cursors.DictCursor)
8、KeyError:請(qǐng)求一個(gè)不存在的字典關(guān)鍵字
根據(jù) keyerror 的定義去核對(duì)SQL語(yǔ)句的字段,發(fā)現(xiàn)查詢出來的字段和參數(shù)傳的字段不一樣,所以報(bào)錯(cuò)了
