Python操作數據庫寫入CSV文件

一、背景
在做APP自動化測試數據進行分離的時候,需要將數據庫的瓶碼數據獲取到,然後再傳入接口,我在網上邊學邊做花了兩天的時間終於,弄成了理想的樣子。在這裏記錄自己的學習過程。
二、環境
Python3.6
MySQL-Navicat(驗證SQL語言是否寫正確)
用到的庫:
import pymysql
import csv
三、代碼解析

# -*- coding: utf-8 -*-
import Common.configDB #這裏我對數據庫操作進行了封裝
import csv

DB = Common.configDB.MyDB()
#定義文件路徑
file = "E:\python\Factory_AppTest1\Factory_AppTest\code.csv"

with open(file, 'w+', newline='') as csv_file:#newline=''是爲了避免出現空格
    write = csv.writer(csv_file, dialect='excel')
    #寫入瓶碼
    #以托盤出庫方式寫入產品ID爲7的瓶碼
    sql = "SELECT t1.packing_info_id,t1.code,t1.inside_code,t1.flag,t2.product_id FROM t_packing_list t1," \
    "(SELECT p2.logistics_id,p1.surplus_amount,p2.id,p2.packing_epc,p1.product_id FROM " \
    "(SELECT * FROM t_logistics_cell_info WHERE surplus_amount=72 AND product_id=7) p1," \
    "(SELECT * FROM t_logistics_cell_list GROUP BY logistics_id) p2 WHERE p1.id=p2.logistics_id) t2 " \
    "WHERE t1.packing_info_id=t2.id GROUP BY t1.packing_info_id"
    DB.executeSQL(sql)
    productID = ['productID_7', 'productID_8', 'productID_9', 'productID_10', 'productID_1042']
    write.writerow(productID)
    #這裏有坑,之前嘗試了無數次write.writerows()導致存到CSV文件的數據被拆成單個的數字

    for item in DB.get_all(sql):
        data = list(tuple(item))#這裏是將SQL查詢到的數據進行轉化,Python從數據庫裏獲取到數數據是元組格式,之前操作xlwt時必須要字符串或者列表,不能是元組格式數據,所以爲了避免這種情況,用csv存數據還是先轉換成列表
        write.writerow([data[1]])#這裏我只需要瓶碼數據所以取了data[1]這個索引
    DB.closeDB()

csv展示格式
這裏寫圖片描述
這裏需要說明一下,每次執行會覆蓋掉之前的數據,由於我的數據需要實時更新,所以這個不會有影響,大家在寫的時候注意一下。
四、讀取指定列
with open(file,’rb’) as csvfile:
reader = csv.DictReader(csvfile)
column = [row[‘productID_7’] for row in reader]
這裏就是以產品名稱標號來讀取數據了

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章