import pymysql
# xlrd 为 python 中读取 excel 的库,支持.xls 和 .xlsx 文件
# import xlrd
# openpyxl 库支持 .xlsx 文件的读写
from openpyxl.reader.excel import load_workbook
from builtins import int
#cur 是数据库的游标连接,path 是 excel 文件的路径
def importExcelToMysql(cur, path):
### xlrd版本
# 读取excel文件
# workbook = xlrd.open_workbook(path)
# sheets = workbook.sheet_names()
# worksheet = workbook.sheet_by_name(sheets[0])
###
### openpyxl版本
# 读取excel文件
workbook = load_workbook(path)
# 得到全部工做表的名字
sheets = workbook.get_sheet_names()
# 得到第一张表
worksheet = workbook.get_sheet_by_name(sheets[0])
###
### xlrd版本
# 将表中数据读到 sqlstr 数组中
# for i in range(1, worksheet.nrows):
# row = worksheet.row(i)
#
# sqlstr = []
#
# for j in range(0, worksheet.ncols):
# sqlstr.append(worksheet.cell_value(i, j))
###
### openpyxl版本
# 将表中每一行数据读到 sqlstr 数组中
for row in worksheet.rows:
sqlstr = []
for cell in row:
sqlstr.append(cell.value)
###
valuestr = [str(sqlstr[0]), int(sqlstr[1]), int(sqlstr[2]), int(sqlstr[3])]
# 将每行数据存到数据库中
cur.execute("insert into student(姓名, 语文, 数学, 英语) values(%s, %s, %s, %s)", valuestr)
# 输出数据库中内容
def readTable(cursor):
# 选择所有
cursor.execute("select * from student")
# 得到返回值,返回多条记录,若没有结果则返回()
results = cursor.fetchall()
for i in range(0, results.__len__()):
for j in range(0, 4):
print(results[i][j], end='\t')
print('\n')
if __name__ == '__main__':
# 和数据库创建链接
conn = pymysql.connect('localhost', 'root', '123456', charset='utf8')
# 建立游标连接
cur = conn.cursor()
# 新建一个database
cur.execute("drop database if exists students")
cur.execute("create database students")
# 选择 students 这个数据库
cur.execute("use students")
# sql中的内容为建立一个名为student的表
sql = """CREATE TABLE IF NOT EXISTS `student` (
`姓名` VARCHAR (20),
`语文` INT,
`数学` INT,
`英语` INT
)"""
# 若是存在student这个表则删除
cur.execute("drop table if exists student")
# 建立表
cur.execute(sql)
# 将 excel 中的数据导入 数据库中
importExcelToMysql(cur, "./student.xlsx")
readTable(cur)
# 关闭游标连接
cur.close()
conn.commit()
# 关闭数据库服务器链接,释放内存
conn.close()