1. 程式人生 > 資料庫 >python實現讀取excel寫入mysql的小工具詳解

python實現讀取excel寫入mysql的小工具詳解

Python是資料分析的強大利器

利用Python做資料分析,第一步就是學習如何讀取日常工作中產生各種excel報表並存入資料中,方便後續資料處理。
這裡向大家分享python如何讀取excel,並使用Python將資料存入Mysql中,有需要的朋友們一起來看看吧。

背景

需要匯入全國高校名錄到資料庫,從教委網站下到了最新的資料,是excel格式,需要做一個工具進行匯入,想試用一下python,說幹就幹。


  • xlrd : excel讀寫庫
  • pymysql : mysql資料庫驅動庫,純python打造
  • re : 正則表示式庫,核心庫

前兩個用pip輕鬆完成安裝,本人是在mac pro是進行的,過程很順利,以前在mac上裝mysqlclient一直安裝不上,所以一度放棄使用python,但我在linux下安裝mysqlclient卻沒有任何問題。

原始碼

很簡單的小指令碼,留存紀念。值得注意的一點,資料庫連線欄位串中要設定字元編碼,不然預設是lanti-1,寫入會出錯。

import xlrd
import pymysql
import re

conn = pymysql.connect(host='database connect address',port=1234,user='root',passwd='****',db='database name',charset='utf8mb4')
p = re.compile(r'\s')
data = xlrd.open_workbook('./W020170616379651135432.xls')
table = data.sheets()[0]
t = table.col_values(1)
nrows = table.nrows
for i in range(nrows):
 r1 = table.row_values(i)
 if len(r1[2]) == 10:
  cur = conn.cursor()
  cur.execute('insert into `university` (`id`,`name`,`ministry`,`city`,`level`,`memo`) \
     values (%s,%s,%s)',(r1[2],p.sub('',r1[1]),r1[3]),r1[4]),r1[5],r1[6]))
  conn.commit()
  cur.close()

conn.close()

心得

寫慣了類C的語言,不太習慣python,想同時掌握兩種風格的程式語言,好痛苦啊。python程式設計效率的確不錯,這是我第一次用python寫實用小程式,連查帶寫帶除錯,一共也就花了一個來小時。python庫與資料豐富,不愁找不到合適的^_^

資料庫寫入優化

早上閒來無事,用批量寫入優化了一下,任務秒完成,比一條條寫入快了很多, 比我預想的差別還要大。看來,沒有不好的工具,只是我們沒有用好啊!

import xlrd
import pymysql
import re

conn = pymysql.connect(host='database connect address',charset='utf8mb4')
p = re.compile(r'\s')
data = xlrd.open_workbook('./W020170616379651135432.xls')
table = data.sheets()[0]
t = table.col_values(1)
nrows = table.nrows
ops = []
for i in range(nrows):
 r1 = table.row_values(i)
 if len(r1[2]) == 10:
  ops.append((r1[2],r1[6]))

cur = conn.cursor()
cur.executemany('insert into `university_copy` (`id`,ops)
conn.commit()
cur.close()

conn.close()

python讀取excel檔案遇到的問題

1、mac安裝xlrd模組,如果cmd下執行pip install xlrd安裝不成功,可以直接去官網下載,名稱類似這樣的檔案xlrd-1.0.0-py3-none-any.whl,切換到已下載的檔案路徑在cmd下執行pip3 install xlrd-1.0.0-py3-none-any.whl即可
http://pypi.python.org/pypi/xlrd

2、python開啟excel報xlrd.biffh.XLRDError: Unsupported format,or corrupt file: Expected BOF record; found b'username'

可以確認下要開啟的excel儲存時是不是本身就存在相容性等格式提示,如果有的話,需要重新建一個不存在格式問題的檔案

import xlrd
from os.path import join,abspath,dirname

fname = join(dirname(dirname(abspath(__file__))),'test1.xls')
bk = xlrd.open_workbook(fname,encoding_override="utf-8")
shxrange = range(bk.nsheets)
try:
sh = bk.sheet_by_name("工作表1")
# 獲取行數
nrows = sh.nrows
# 獲取列數
ncols = sh.ncols
print("nrows %d,ncols %d" % (nrows,ncols))
# 獲取第一行第一列資料
cell_value = sh.cell_value(1,1)
# print cell_value

row_list = []
# 獲取各行資料
for i in range(0,nrows):
row_data = sh.row_values(i)
row_list.append(row_data)
except:
print("no sheet in %s named Sheet1" % fname)

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對我們的支援。