寫自動化測試的時候我但願執行數據庫前置任務,把數據庫查詢的結果做爲請求的參數,可是正常返回結果爲列表嵌套裏面,這樣就會影響到關鍵字準確的獲取,特別的受限於SQL的查詢字段的的順序,因此但願返回的單條數據結果是字典,返回結果爲多條數據的時統一存放在列表中便於對數據遍歷,同時我在傳入參數的時候能夠準確的獲取關鍵字;mysql
# -*- coding: utf-8 -*- # @Time : 2018/12/30 18:39 # @Author : Hunk # @Email : liuqiang_cl@163.com # @File : ex01.py # @Software: PyCharm import pymysql db = pymysql.connect(host='47.104.149.180', user="root", passwd="root", db='movie', port=3306, charset='utf8') cursor = db.cursor() sql = """select name from admin; """ cursor.execute(sql) desc = cursor.description # 獲取字段的描述,默認獲取數據庫字段名稱,從新定義時經過AS關鍵從新命名便可 data_dict = [dict(zip([col[0] for col in desc], row)) for row in cursor.fetchall()] # 列表表達式把數據組裝起來 cursor.close() db.close() print(data_dict)
/*執行SQL之後返回的查詢結果*/sql
[{'name': 'admin'}, {'name': 'admin1'}]
/*若是以元組的形式返回數據*/數據庫
經過元組返回的數據,若是獲取的時候須要經過便利或者根據索引來獲取指定數據,可是若是元組的長度變動,會形成獲取數據的索引變更,容易對本身的代碼的耦合性比較高。測試
(('admin',), ('admin1',))
對比兩種返回的結果,明顯以字典放的結果更容易被操做,也能夠知道具體是哪一個字段返回的結果,不會受限於SQL的變更而更改本身的表明,可是最後統一放在列表換是元組,這個是根據本身的習慣來處理,沒有特定的要求。fetch