欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python實現(xiàn)讀取excel寫入mysql的小工具詳解

 更新時間:2017年11月20日 09:53:15   作者:zhoutk  
EXCEL 和 MySQL 大體上來說都可以算是"數(shù)據(jù)庫",MySQL貌似有EXCEL的接口,但是最近在自學(xué)Python,用Python實現(xiàn)了一下,下面這篇文章主要給大家介紹了關(guān)于利用python實現(xiàn)讀取excel寫入mysql的一個小工具,需要的朋友可以參考下。

Python是數(shù)據(jù)分析的強(qiáng)大利器

利用Python做數(shù)據(jù)分析,第一步就是學(xué)習(xí)如何讀取日常工作中產(chǎn)生各種excel報表并存入數(shù)據(jù)中,方便后續(xù)數(shù)據(jù)處理。
這里向大家分享python如何讀取excel,并使用Python將數(shù)據(jù)存入Mysql中,有需要的朋友們一起來看看吧。

背景

需要導(dǎo)入全國高校名錄到數(shù)據(jù)庫,從教委網(wǎng)站下到了最新的數(shù)據(jù),是excel格式,需要做一個工具進(jìn)行導(dǎo)入,想試用一下python,說干就干。


  • xlrd : excel讀寫庫
  • pymysql : mysql數(shù)據(jù)庫驅(qū)動庫,純python打造
  • re : 正則表達(dá)式庫,核心庫

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

源代碼

很簡單的小腳本,留存紀(jì)念。值得注意的一點,數(shù)據(jù)庫連接字段串中要設(shè)定字符編碼,不然默認(rèn)是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, %s, %s, %s)',
     (r1[2], p.sub('', r1[1]), p.sub('', r1[3]), p.sub('', r1[4]), r1[5], r1[6]))
  conn.commit()
  cur.close()

conn.close()

心得

寫慣了類C的語言,不太習(xí)慣python,想同時掌握兩種風(fēng)格的編程語言,好痛苦啊。python編程效率的確不錯,這是我第一次用python寫實用小程序,連查帶寫帶調(diào)試,一共也就花了一個來小時。python庫與資料豐富,不愁找不到合適的^_^

數(shù)據(jù)庫寫入優(yōu)化

早上閑來無事,用批量寫入優(yōu)化了一下,任務(wù)秒完成,比一條條寫入快了很多, 比我預(yù)想的差別還要大??磥恚瑳]有不好的工具,只是我們沒有用好啊!

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
ops = []
for i in range(nrows):
 r1 = table.row_values(i)
 if len(r1[2]) == 10:
  ops.append((r1[2], p.sub('', r1[1]), p.sub('', r1[3]), p.sub('', r1[4]), r1[5], r1[6]))

cur = conn.cursor()
cur.executemany('insert into `university_copy` (`id`, `name`, `ministry`, `city`, `level`, `memo`) \
     values (%s, %s, %s, %s, %s, %s)', ops)
conn.commit()
cur.close()

conn.close()

python讀取excel文件遇到的問題

1、mac安裝xlrd模塊,如果cmd下執(zhí)行pip install xlrd安裝不成功,可以直接去官網(wǎng)下載,名稱類似這樣的文件xlrd-1.0.0-py3-none-any.whl,切換到已下載的文件路徑在cmd下執(zhí)行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'

可以確認(rèn)下要打開的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")
# 獲取行數(shù)
nrows = sh.nrows
# 獲取列數(shù)
ncols = sh.ncols
print("nrows %d, ncols %d" % (nrows, ncols))
# 獲取第一行第一列數(shù)據(jù)
cell_value = sh.cell_value(1, 1)
# print cell_value

row_list = []
# 獲取各行數(shù)據(jù)
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)

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

相關(guān)文章

  • Python 字符串操作方法大全

    Python 字符串操作方法大全

    python字符串操作實方法大合集,包括了幾乎所有常用的python字符串操作,如字符串的替換、刪除、截取、復(fù)制、連接、比較、查找、分割等,需要的朋友可以參考下
    2014-03-03
  • 使用python批量化音樂文件格式轉(zhuǎn)換的實例

    使用python批量化音樂文件格式轉(zhuǎn)換的實例

    今天小編就為大家分享一篇使用python批量化音樂文件格式轉(zhuǎn)換的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-01-01
  • Python實現(xiàn)約瑟夫環(huán)問題的方法

    Python實現(xiàn)約瑟夫環(huán)問題的方法

    這篇文章主要介紹了Python實現(xiàn)約瑟夫環(huán)問題的方法,詳細(xì)分析了約瑟夫環(huán)問題的描述、原理與解決方法,需要的朋友可以參考下
    2016-05-05
  • 大數(shù)據(jù)分析用java還是Python

    大數(shù)據(jù)分析用java還是Python

    在本篇文章里小編給大家分享了關(guān)于java和Python哪個適合大數(shù)據(jù)分析的相關(guān)知識點文章,有需要的朋友們可以學(xué)習(xí)下。
    2020-07-07
  • 一文帶你全面理解Python中的self

    一文帶你全面理解Python中的self

    對于初學(xué)Python的同學(xué)來說,在class中經(jīng)常看到self。那么,到底self是個啥?這篇文章小編就來帶大家深入了解一下,希望對大家有所幫助
    2023-03-03
  • python celery beat實現(xiàn)定時任務(wù)的示例代碼

    python celery beat實現(xiàn)定時任務(wù)的示例代碼

    在日常工作中,我們常常會用到需要周期性執(zhí)行的任務(wù),本文主要介紹了python celery beat實現(xiàn)定時任務(wù)的示例代碼,具有一定的參考價值,感興趣的可以了解一下
    2024-03-03
  • python+opencv識別圖片中的圓形

    python+opencv識別圖片中的圓形

    這篇文章主要為大家詳細(xì)介紹了python+opencv識別圖片中的圓形 ,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-03-03
  • python實現(xiàn)Adapter模式實例代碼

    python實現(xiàn)Adapter模式實例代碼

    這篇文章主要介紹了python實現(xiàn)Adapter模式實例代碼,分享了相關(guān)代碼示例,小編覺得還是挺不錯的,具有一定借鑒價值,需要的朋友可以參考下
    2018-02-02
  • 利用Python寫一場新年煙花秀

    利用Python寫一場新年煙花秀

    這篇文章主要介紹了利用Python寫一場新年煙花秀,可以送給朋友還可以當(dāng)作練習(xí),Python 模塊包括:tkinter、PIL、time、random、math,下面來看一下代碼實現(xiàn),需要的朋友可以參考一下
    2022-01-01
  • 在Python3中初學(xué)者應(yīng)會的一些基本的提升效率的小技巧

    在Python3中初學(xué)者應(yīng)會的一些基本的提升效率的小技巧

    這篇文章主要介紹了在Python3中的一些基本的小技巧,有利于剛剛上手Python的初學(xué)者提升開發(fā)效率,需要的朋友可以參考下
    2015-03-03

最新評論