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):
### openpyxl版本
# 讀取excel文件
workbook = load_workbook(path)
# 獲得所有工作表的名字
sheets = workbook.get_sheet_names()
# 獲得第一張表
worksheet = workbook.get_sheet_by_name(sheets[0])
### 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(host='localhost', user='root', password='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, r"/技術提升/工具/tools/student.xlsx")
readTable(cur)
# 關閉游標鏈接
cur.close()
conn.commit()
# 關閉數據庫服務器連接,釋放內存
conn.close()