前言:环境:windows10,python版本3.8
    今天得空,写一篇关于python连接数据库查询数据,并且导出为excel表格的文章,话不多说,进入正题。
    前期准备:
    1、连接mysql数据库,导出到excel的功能,需要用到两个第三方的包,pymysql和xlwt,如果没有安装,则cmd进入python的安装目录下的scripts目录,如下:

python导出数据到Excel_pythonpython导出数据到Excel_python_02

使用pip install pymysql和pip install xlwt来安装,如果没有安装pip,则请先安装pip

2、准备数据库test和数据表user:

sql:

/*
Navicat MySQL Data Transfer

Source Server         : 本地
Source Server Version : 80016
Source Host           : localhost:3306
Source Database       : test

Target Server Type    : MYSQL
Target Server Version : 80016
File Encoding         : 65001

Date: 2020-08-12 10:28:57
*/

SET FOREIGN_KEY_CHECKS=0;

-- ----------------------------
-- Table structure for user
-- ----------------------------
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
  `id` int(10) unsigned NOT NULL COMMENT '主键id',
  `name` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '用户姓名',
  `count` int(10) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

-- ----------------------------
-- Records of user
-- ----------------------------
INSERT INTO `user` VALUES ('0', 'name0', '34');
INSERT INTO `user` VALUES ('1', 'name1', '25');
INSERT INTO `user` VALUES ('2', 'name2', '78');
INSERT INTO `user` VALUES ('3', 'name3', '1');
INSERT INTO `user` VALUES ('4', 'name4', '23');
INSERT INTO `user` VALUES ('8', 'name8', '146');
INSERT INTO `user` VALUES ('9', 'name9', '34');
INSERT INTO `user` VALUES ('10', 'name10', '89');
INSERT INTO `user` VALUES ('11', 'name11', '0');
INSERT INTO `user` VALUES ('12', 'name12', '12');
INSERT INTO `user` VALUES ('13', 'name13', '76');
INSERT INTO `user` VALUES ('16', 'name16', '143');
INSERT INTO `user` VALUES ('17', 'name17', '121');
INSERT INTO `user` VALUES ('18', 'name18', '56');
INSERT INTO `user` VALUES ('19', 'name19', '16');

python导出数据到Excel_python_03

	使用VSCode作为编辑器,编写代码如下:
# -- coding:utf-8 导入数据到excel -- import xlwt import pymysql

def export_excel(table_name):

连接数据库,查询数据
host, user, passwd, db = '127.0.0.1', 'root', 'password', 'test' conn = pymysql.connect(host=host,port=3306,user=user,passwd=passwd,db=db,charset='utf8') cur = conn.cursor() sql = 'select * from %s' % table_name cur.execute(sql)

获取所有字段名
fields = [field[0] for field in cur.description]

获取所有数据
all_data = cur.fetchall()

写入excel
book = xlwt.Workbook() sheet = book.add_sheet('name')

for col,field in enumerate(fields): sheet.write(0,col,field)

row = 1 for data in all_data: for col,field in enumerate(data): sheet.write(row,col,field) row += 1

book.save("%s.xls" % table_name)

if name == 'main': export_excel('user')

在终端中执行即可得到excel:

python导出数据到Excel_python_04

python导出数据到Excel_python_05

数据和user表中的一致,操作成功。

上述代码需要注意的点:

    1、文件头部表示coding:utf-8;

    2、数据库连接信息中charset使用的是utf8,没有短横杠(-);

    3、没有出现中文字符;