1. 程式人生 > >python MySQL執行SQL查詢結果返回字典

python MySQL執行SQL查詢結果返回字典

style spa sql 耦合性 mysql software 兩種 描述 clas

  寫自動化測試的時候我希望執行數據庫前置任務,把數據庫查詢的結果作為請求的參數,但是正常返回結果為列表嵌套裏面,這樣就會影響到關鍵字準確的獲取,特別的受限於SQL的查詢字段的的順序,所以希望返回的單條數據結果是字典,返回結果為多條數據的時統一存放在列表中便於對數據遍歷,同時我在傳入參數的時候可以準確的獲取關鍵字;

# -*- coding: utf-8 -*-
# @Time    : 2018/12/30 18:39
# @Author  : Hunk
# @Email   : [email protected]
# @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以後返回的查詢結果*/

[{name: admin}, {name: admin1}]

/*如果以元組的形式返回數據*/

通過元組返回的數據,如果獲取的時候需要通過便利或者根據索引來獲取指定數據,但是如果元組的長度變更,會造成獲取數據的索引變動,容易對自己的代碼的耦合性比較高。

((admin,), (admin1
,))

對比兩種返回的結果,明顯以字典放的結果更容易被操作,也可以知道具體是哪個字段返回的結果,不會受限於SQL的變動而更改自己的代表,但是最後統一放在列表換是元組,這個是根據自己的習慣來處理,沒有特定的要求。

python MySQL執行SQL查詢結果返回字典