摘要:背景需要導(dǎo)入全國(guó)高校名錄到數(shù)據(jù)庫(kù),從教委網(wǎng)站下到了最新的數(shù)據(jù),是格式,需要做一個(gè)工具進(jìn)行導(dǎo)入,想試用一下,說(shuō)干就干。值得注意的一點(diǎn),數(shù)據(jù)庫(kù)連接字段串中要設(shè)定字符編碼,不然默認(rèn)是,寫入會(huì)出錯(cuò)??磥?lái),沒(méi)有不好的工具,只是我們沒(méi)有用好啊
背景
需要導(dǎo)入全國(guó)高校名錄到數(shù)據(jù)庫(kù),從教委網(wǎng)站下到了最新的數(shù)據(jù),是excel格式,需要做一個(gè)工具進(jìn)行導(dǎo)入,想試用一下python,說(shuō)干就干。
庫(kù)xlrd : excel讀寫庫(kù)
pymysql : mysql數(shù)據(jù)庫(kù)驅(qū)動(dòng)庫(kù),純python打造
re : 正則表達(dá)式庫(kù),核心庫(kù)
前兩個(gè)用pip輕松完成安裝,本人是在mac pro是進(jìn)行的,過(guò)程很順利,以前在mac上裝mysqlclient一直安裝不上,所以一度放棄使用python,但我在linux下安裝mysqlclient卻沒(méi)有任何問(wèn)題。
源代碼很簡(jiǎn)單的小腳本,留存紀(jì)念。值得注意的一點(diǎn),數(shù)據(jù)庫(kù)連接字段串中要設(shè)定字符編碼,不然默認(rèn)是lanti-1,寫入會(huì)出錯(cuò)。
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的語(yǔ)言,不太習(xí)慣python,想同時(shí)掌握兩種風(fēng)格的編程語(yǔ)言,好痛苦啊。python編程效率的確不錯(cuò),這是我第一次用python寫實(shí)用小程序,連查帶寫帶調(diào)試,一共也就花了一個(gè)來(lái)小時(shí)。python庫(kù)與資料豐富,不愁找不到合適的^_^
數(shù)據(jù)庫(kù)寫入優(yōu)化早上閑來(lái)無(wú)事,用批量寫入優(yōu)化了一下,任務(wù)秒完成,比一條條寫入快了很多, 比我預(yù)想的差別還要大??磥?lái),沒(méi)有不好的工具,只是我們沒(méi)有用好啊!
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()
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/44468.html
摘要:功能將數(shù)據(jù)導(dǎo)入到數(shù)據(jù)庫(kù)練習(xí)使用將的數(shù)據(jù)導(dǎo)入到練習(xí)語(yǔ)句查看創(chuàng)建插入語(yǔ)句創(chuàng)建一個(gè)循環(huán)迭代讀取文件每行數(shù)據(jù)的從第二行開(kāi)始是要跳過(guò)標(biāo)題關(guān)閉游標(biāo)提交關(guān)閉數(shù)據(jù)庫(kù)連接打印結(jié)果我剛導(dǎo)入了除了之外還可以另外的寫操作詞篇暫不贅述對(duì)于的操作有很多有意思的方法, 功能:將Excel數(shù)據(jù)導(dǎo)入到MySQL數(shù)據(jù)庫(kù) 練習(xí)使用sqlite3 將excel的數(shù)據(jù)導(dǎo)入到mysql 練習(xí)sql語(yǔ)句-查看dochttps:...
摘要:測(cè)試業(yè)務(wù)需要現(xiàn)有中有個(gè)分別是的,的,的,如下圖的和都有列,且列數(shù)據(jù)值有部分是一樣的現(xiàn)需要將和匹配生成的,匹配規(guī)則把復(fù)制到的文件中,中的列值取值是和都有列匹配對(duì)應(yīng)的的列值實(shí)現(xiàn)打開(kāi)要匹配的列索引目標(biāo)數(shù)據(jù)列索引的的的的的總行數(shù)的的的總列數(shù)的要匹 測(cè)試業(yè)務(wù)需要: 1.現(xiàn)有a.xlsx a.xlsx中...
摘要:寫這篇文章主要是想按照一定的邏輯順總結(jié)一下自己做項(xiàng)目以來(lái)序用到過(guò)的的知識(shí)點(diǎn)雖然官方文檔上各個(gè)方面都寫的很清楚但是還是想自己再寫一份一個(gè)是想作為個(gè)人梳理另外也可以把最經(jīng)常使用的部分拎出來(lái)更清晰一些不定時(shí)更新數(shù)據(jù)的讀數(shù)據(jù)其中是需要的語(yǔ)句是創(chuàng)建的 寫這篇文章,主要是想按照一定的邏輯順總結(jié)一下自己做項(xiàng)目以來(lái),序用到過(guò)的pandas的知識(shí)點(diǎn).雖然pandas官方文檔上各個(gè)方面都寫的很清楚,但是還...
摘要:查看數(shù)據(jù)的基本統(tǒng)計(jì)信息。用處是用于數(shù)據(jù)讀寫處理更改提取等一系列操作的包,可以說(shuō),所有能實(shí)現(xiàn)的功能,都可以通過(guò)代碼輕松實(shí)現(xiàn),因此,對(duì)于學(xué)習(xí)非常重要。如果在里,需要翻到最低和最右,而且可能由于溢出無(wú)法窮盡可以簡(jiǎn)單的實(shí)現(xiàn)。 放在前面的話? ? ????? ? ? ?? ????????這學(xué)期刻意少...
閱讀 1588·2021-09-26 09:46
閱讀 2675·2021-09-07 09:59
閱讀 2760·2021-09-07 09:59
閱讀 1887·2019-08-30 14:20
閱讀 936·2019-08-26 13:39
閱讀 3183·2019-08-26 12:24
閱讀 781·2019-08-26 11:55
閱讀 1222·2019-08-23 16:49