python3实现mysql导出excel的方法

  • Post category:Python

下面是针对“python3实现mysql导出excel的方法”的完整实例教程:

1. 安装依赖库

首先,在Python中使用第三方库实现导出excel的功能。因此,需要先安装以下依赖库:

pip install xlwt pymysql openpyxl

其中:

  • xlwt 用于写入.xls文件;
  • pymysql 用于在Python代码中使用MySQL;
  • openpyxl 用于写入.xlsx文件。

2. 连接MySQL

在导出之前,需要连接MySQL数据库,并选择需要导出的数据。下面是连接MySQL数据库的示例代码:

import pymysql

connection = pymysql.connect(
  host="localhost",
  user="root",
  password="root",
  db="database_name",
  charset="utf8"
)

其中:

  • host:MySQL服务器的主机名,默认为localhost
  • user:MySQL登录用户名;
  • password:MySQL登录密码;
  • db:需要连接的数据库名称;
  • charset:数据表的字符编码,默认为utf8

3. 查询MySQL数据

查询MySQL数据并将结果导出到excel文件中。查询相关数据可以使用SELECT语句。下面是查询MySQL表中所有数据的示例代码:

import xlwt

cursor = connection.cursor()
select_sql = "SELECT * FROM table_name"
cursor.execute(select_sql)
result = cursor.fetchall()

4. 将数据写入excel文件

现在,已经获取了MySQL表中所有数据,接下来,就需要将这些数据写入excel文件中。首先,需要创建一个新的excel文件。下面是创建一个.xls文件的示例代码:

workbook = xlwt.Workbook()
worksheet = workbook.add_sheet('sheet1')

如果想要创建.xlsx文件,则需要使用如下代码:

from openpyxl import Workbook

workbook = Workbook()
worksheet = workbook.active
worksheet.title = 'sheet1'

其中,.active是来获取默认的工作表,.title则用于设置工作表的名称。

然后,将result中的数据写入excel文件。下面是将MySQL表中所有数据写入到.xls或.xlsx文件中的示例代码:

for i, row in enumerate(result):
    for j, col in enumerate(row):
        worksheet.write(i+1, j, col)

workbook.save('table_name.xls')

注意:

  • enumerate() 是Python中经常使用的内置函数,用于将可遍历的数据对象(如列表、元组或字符串)生成一个枚举对象。

  • .write(i+1, j, col)中,i+1表示从excel文件的第二行开始写入数据,j表示列数,而col则表示该单元格中的数据值。

5. 完整代码示例

下面是完整的示例代码,其中使用的是.xls文件:

import xlwt
import pymysql

# 连接MySQL
connection = pymysql.connect(
  host="localhost",
  user="root",
  password="root",
  db="database_name",
  charset="utf8"
)

# 查询MySQL数据
cursor = connection.cursor()
select_sql = "SELECT * FROM table_name"
cursor.execute(select_sql)
result = cursor.fetchall()

# 写入excel文件
workbook = xlwt.Workbook()
worksheet = workbook.add_sheet('sheet1')
for i, row in enumerate(result):
    for j, col in enumerate(row):
        worksheet.write(i+1, j, col)
workbook.save('table_name.xls')

导出结果为以下内容:

id name age gender
1 张三 20
2 李四 21
3 王五 22

6. 示例说明

(1)查询表中特定条件的数据并导出excel文件

在实际使用中,我们可能需要根据一定的条件查询MySQL表中的特定数据,并将其导出到excel文件中。例如,导出gender字段为的所有数据。此时,可以使用以下SELECT语句:

select_sql = "SELECT * FROM table_name WHERE gender='男'"

在Python代码中的使用方法与之前的示例类似,此处不再重复。最终导出的excel文件中,仅包含gender字段为的数据。

(2)将所有数据导出到单个或多个excel文件中

如果MySQL表中的数据量很大,可能需要将所有的数据分别导出到不同的excel文件中。此时,可以根据一定的方式,将表中的数据分割为多个数据块,并分别导出到不同的excel文件中。具体实现方法与之前的示例类似,此处不再赘述。