python查询数据库MySQL写入Excel

测试员-小枫

今天小枫分享一个Python查询MySQL的语句写入Excel,用Excl查看结果,不浪费时间了,下面是干货

一、概述

现有一个用户表,需要将表数据写入到excel中。

环境说明

mysql版本:5.7

端口:3306

数据库:test

表名:users

表结构如下:

```

CREATE TABLE `users` (

  `id` bigint(20) NOT NULL AUTO_INCREMENT,

  `username` varchar(50) COLLATE utf8mb4_bin NOT NULL COMMENT '用户名',

  `password` varchar(255) CHARACTER SET utf8mb4 DEFAULT NULL COMMENT '密码',

  `phone` varchar(20) CHARACTER SET utf8mb4 DEFAULT NULL COMMENT '手机号',

  `email` varchar(255) CHARACTER SET utf8mb4 DEFAULT NULL COMMENT '邮箱',

  `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',

  PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;

```

插入三条数据:

```

INSERT INTO `test`.`users` (`id`, `username`, `password`, `phone`, `email`, `create_time`)

VALUES ('1', 'xiao', '123', '12345678910', '[email protected]', '2020-04-10 01:22:07');

INSERT INTO `test`.`users` (`id`, `username`, `password`, `phone`, `email`, `create_time`)

VALUES ('2', 'zhang', '123', '12345678910', '[email protected]', '2020-04-10 01:22:07');

INSERT INTO `test`.`users` (`id`, `username`, `password`, `phone`, `email`, `create_time`)

VALUES ('3', 'lisi', '123', '12345678910', '[email protected]', '2020-04-10 01:22:07');

```

二、基本写法

安装模块   

如果对软件测试、接口测试、自动化测试、面试经验交流。感兴趣可以加软件测试交流:1140267353,还会有同行一起技术交流,同时还有海量免费学习资料。

```

pip3 install xlwt pymysql

```

test_excel.py

```python

#!/usr/bin/env python3

# coding: utf-8

import os

import xlwt

import pymysql

import datetime

class MysqlToExcel(object):

    def __init__(self):

        self.host = '10.212.21.92'

        self.user = 'root'

        self.passwd = 'abcd1234'

        self.db_name = 'test'

        self.port = 3306

        self.file_name = 'data.xls'

    def get_query_results(self):

        sql = "select * from test.users"

        conn = pymysql.connect(

            host=self.host,

            user=self.user,

            passwd=self.passwd,

            port=self.port,

            database=self.db_name,

            charset='utf8',

            cursorclass=pymysql.cursors.DictCursor

        )

        cur = conn.cursor()  # 创建游标

        cur.execute(sql)  # 执行sql命令

        result = cur.fetchall()  # 获取执行的返回结果

        # print(result)

        cur.close()

        conn.close()  # 关闭mysql 连接

        return result

    def generate_table(self):

        """

        生成excel表格

        :return:

        """

        # 删除已存在的文件

        if os.path.exists(self.file_name):

            os.remove(self.file_name)

        result = self.get_query_results()

        # print(result)

        if not result:

            print("查询结果为空")

            return False

        # 创建excel对象

        f = xlwt.Workbook()

        sheet1 = f.add_sheet('Sheet1', cell_overwrite_ok=True)

        # 列字段

        column_names = ['id','username','password','phone','email']

        # 写第一行,也就是列所在的行

        for i in range(0, len(column_names)):

            sheet1.write(0, i, column_names[i])

        # 写入多行

        num = 0  # 计数器

        for i in result:

            sheet1.write(num + 1, 0, i['id'])

            sheet1.write(num + 1, 1, i['username'])

            sheet1.write(num + 1, 2, i['password'])

            sheet1.write(num + 1, 3, i['phone'])

            sheet1.write(num + 1, 4, i['email'])

            # 日期转换为字符串

            value = i['create_time'].strftime('%Y-%m-%d %H:%M:%S')

            sheet1.write(num + 1, 5, value)

            num += 1  # 自增1

        # 保存文件

        f.save(self.file_name)

        # 判断文件是否存在

        if not os.path.exists(self.file_name):

            print("生成excel失败")

            return False

        print("生成excel成功")

        return True

if __name__ == '__main__':

    MysqlToExcel().generate_table()

```

执行输出:

生成excel成功

查看excel表


python查询数据库MySQL写入Excel_第1张图片

以上仅供参考和借鉴,希望对你有所帮助!

小枫文章整理不易,欢迎各位朋友点赞!

你可能感兴趣的:(python查询数据库MySQL写入Excel)