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展示格式
Python操作数据库写入CSV文件_第1张图片
这里需要说明一下,每次执行会覆盖掉之前的数据,由于我的数据需要实时更新,所以这个不会有影响,大家在写的时候注意一下。
四、读取指定列
with open(file,’rb’) as csvfile:
reader = csv.DictReader(csvfile)
column = [row[‘productID_7’] for row in reader]
这里就是以产品名称标号来读取数据了

你可能感兴趣的:(Python自动化测试)