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


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

# -*- 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以后返回的查詢結果*/

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

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

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

(('admin',), ('admin1',))

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM