原文鏈接: https://blog.csdn.net/Anwel/article/details/79967261
非常使用的方法:(親測(cè)有效果)
import
pymysql
# xlrd 為 python 中讀取 excel 的庫(kù),支持.xls 和 .xlsx 文件
# import xlrd
# openpyxl 庫(kù)支持 .xlsx 文件的讀寫
from
openpyxl
.
reader
.
excel
import
load_workbook
from
builtins
import
int
#cur 是數(shù)據(jù)庫(kù)的游標(biāo)鏈接,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版本
# 將表中數(shù)據(jù)讀到 sqlstr 數(shù)組中
# 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版本
# 將表中每一行數(shù)據(jù)讀到 sqlstr 數(shù)組中
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
]
)
]
# 將每行數(shù)據(jù)存到數(shù)據(jù)庫(kù)中
cur
.
execute
(
"insert into student(姓名, 語(yǔ)文, 數(shù)學(xué), 英語(yǔ)) values(%s, %s, %s, %s)"
,
valuestr
)
# 輸出數(shù)據(jù)庫(kù)中內(nèi)容
def
readTable
(
cursor
)
:
# 選擇全部
cursor
.
execute
(
"select * from student"
)
# 獲得返回值,返回多條記錄,若沒(méi)有結(jié)果則返回()
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__'
:
# 和數(shù)據(jù)庫(kù)建立連接
conn
=
pymysql
.
connect
(
'localhost'
,
'root'
,
'123456'
,
charset
=
'utf8'
)
# 創(chuàng)建游標(biāo)鏈接
cur
=
conn
.
cursor
(
)
# 新建一個(gè)database
cur
.
execute
(
"drop database if exists students"
)
cur
.
execute
(
"create database students"
)
# 選擇 students 這個(gè)數(shù)據(jù)庫(kù)
cur
.
execute
(
"use students"
)
# sql中的內(nèi)容為創(chuàng)建一個(gè)名為student的表
sql
=
"""CREATE TABLE IF NOT EXISTS `student` (
`姓名` VARCHAR (20),
`語(yǔ)文` INT,
`數(shù)學(xué)` INT,
`英語(yǔ)` INT
)"""
# 如果存在student這個(gè)表則刪除
cur
.
execute
(
"drop table if exists student"
)
# 創(chuàng)建表
cur
.
execute
(
sql
)
# 將 excel 中的數(shù)據(jù)導(dǎo)入 數(shù)據(jù)庫(kù)中
importExcelToMysql
(
cur
,
"./student.xlsx"
)
readTable
(
cur
)
# 關(guān)閉游標(biāo)鏈接
cur
.
close
(
)
conn
.
commit
(
)
# 關(guān)閉數(shù)據(jù)庫(kù)服務(wù)器連接,釋放內(nèi)存
conn
.
close
(
)
根據(jù)需求更改main中的表數(shù)據(jù)即可,毫秒級(jí)別的導(dǎo)入啊
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
