xlrd MySQL_基于Python的mysql与excel互相转换

1.mysql转为excel

getConn函数获取mysql连接,第1个参数database为要连接的数据库。

mysql2excel函数完成主要转换功能,第1个参数database为要连接的数据库,第2个参数为要转换的数据表,第3个参数为要保存的excel文件名。

在执行cursor.execute后,利用data_list = cursor.fetchall()获取数据库中所有数据,利用cursor.description获取函数中字段的相关信息,

字段的相关信息的数据类型为元组,其中第1个为字段名。

利用xlwt.Workbook()方法实例化对象赋值给excel变量,利用excel.add_sheet()方法获取新的表格,利用sheet.write()往excel文件中写入数据。

import pymysql

import xlwt

def getConn(database='pydb'):

args = dict(

host='localhost',

user='root',

passwd='...your passwd',

db=database,

charset='utf8'

)

conn = pymysql.connect(**args)

return conn

def mysql2excel(database='pydb',table='test',excelResult = ''):

conn = getConn(database)

cursor = conn.cursor()

cursor.execute("select * from {}".format(table))

data_list = cursor.fetchall()

excel = xlwt.Workbook()

sheet = excel.add_sheet("sheet1")

row_number = len(data_list)

column_number = len(cursor.description)

for i in range(column_number):

sheet.write(0,i,cursor.description[i][0])

for i in range(row_number):

for j in range(column_number):

sheet.write(i+1,j,data_list[i][j])

excelName = "mysql_{}_{}.xls".format(database,table)

if excelResult != '':

excelName = excelResult

excel.save(excelName)

if __name__ == "__main__":

mysql2excel("customdb","deposit")

2.excel转为mysql

getConn函数获取mysql连接,第1个参数database为要连接的数据库。

excel2mysql函数完成主要转换功能,第1个参数为读取的excel文件名,第2个参数为存放数据的数据库,第3个参数为保存的表名。

利用xlrd.open_workbook()方法实例化对象赋值给excel,利用excel.sheet_by_index(0)获取第1张数据薄赋值给sheet,

利用sheet.nrows获取行数赋值给row_number,利用sheet.ncols获取列数赋值给column_number

利用sheet.row_values获取第一行的内容即字段赋值给field_list,利用循环+sheet.row_values()方法获取数据内容赋值给data_list

数据库操作分为:连接——>删除原有同名数据库——>创建数据库——>插入数据——>提交并关闭连接

drop_sql变量为删除原有同名数据库的sql语句,create_sql变量为创建数据库的sql语句,insert_sql变量为往数据表中插入数据的sql语句。

最后conn.commit()和conn.close()

import xlrd

import pymysql

def getConn(database='pydb'):

args = dict(

host='localhost',

user='root',

passwd='...your passwd',

db=database,

charset='utf8'

)

conn = pymysql.connect(**args)

return conn

def excel2mysql(excelName,database='pydb',table='test'):

#下面代码作用:获取到excel中的字段和数据

excel = xlrd.open_workbook(excelName)

sheet = excel.sheet_by_index(0)

row_number = sheet.nrows

column_number = sheet.ncols

field_list = sheet.row_values(0)

data_list = []

for i in range(1,row_number):

data_list.append(sheet.row_values(i))

#下面代码作用:根据字段创建表,根据数据执行插入语句

conn = getConn(database)

cursor = conn.cursor()

drop_sql = "drop table if exists {}".format(table)

cursor.execute(drop_sql)

create_sql = "create table {}(".format(table)

for field in field_list[:-1]:

create_sql += "{} varchar(50),".format(field)

create_sql += "{} varchar(50))".format(field_list[-1])

cursor.execute(create_sql)

for data in data_list:

new_data = ["'{}'".format(i) for i in data]

insert_sql = "insert into {} values({})".format(\

table,','.join(new_data))

cursor.execute(insert_sql)

conn.commit()

conn.close()

if __name__ == '__main__':

excel2mysql("mysql_myschool_student.xls")

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值